http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/835eb276/app/libraries/Airavata/API/Airavata.php ---------------------------------------------------------------------- diff --git a/app/libraries/Airavata/API/Airavata.php b/app/libraries/Airavata/API/Airavata.php index 2532766..8133f81 100644 --- a/app/libraries/Airavata/API/Airavata.php +++ b/app/libraries/Airavata/API/Airavata.php @@ -1,149 +1,2613 @@ <?php namespace Airavata\API; /** - * Autogenerated by Thrift Compiler (0.9.1) + * Autogenerated by Thrift Compiler (0.9.2) * * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING * @generated */ -use Thrift\Base\TBase; -use Thrift\Type\TType; -use Thrift\Type\TMessageType; -use Thrift\Exception\TException; +use Thrift\Exception\TApplicationException; use Thrift\Exception\TProtocolException; -use Thrift\Protocol\TProtocol; use Thrift\Protocol\TBinaryProtocolAccelerated; -use Thrift\Exception\TApplicationException; +use Thrift\Type\TMessageType; +use Thrift\Type\TType; interface AiravataIf { - public function getAPIVersion(\Airavata\Model\Security\AuthzToken $authzToken); - public function addGateway(\Airavata\Model\Workspace\Gateway $gateway); - public function updateGateway($gatewayId, \Airavata\Model\Workspace\Gateway $updatedGateway); - public function getGateway($gatewayId); - public function deleteGateway($gatewayId); - public function getAllGateways(); - public function isGatewayExist($gatewayId); - public function generateAndRegisterSSHKeys($gatewayId, $userName); - public function getSSHPubKey($airavataCredStoreToken); - public function getAllUserSSHPubKeys($userName); - public function createProject($gatewayId, \Airavata\Model\Workspace\Project $project); - public function updateProject($projectId, \Airavata\Model\Workspace\Project $updatedProject); - public function getProject($projectId); - public function deleteProject($projectId); - public function getAllUserProjects($gatewayId, $userName); - public function getAllUserProjectsWithPagination($gatewayId, $userName, $limit, $offset); - public function searchProjectsByProjectName($gatewayId, $userName, $projectName); - public function searchProjectsByProjectNameWithPagination($gatewayId, $userName, $projectName, $limit, $offset); - public function searchProjectsByProjectDesc($gatewayId, $userName, $description); - public function searchProjectsByProjectDescWithPagination($gatewayId, $userName, $description, $limit, $offset); - public function searchExperimentsByName($gatewayId, $userName, $expName); - public function searchExperimentsByNameWithPagination($gatewayId, $userName, $expName, $limit, $offset); - public function searchExperimentsByDesc($gatewayId, $userName, $description); - public function searchExperimentsByDescWithPagination($gatewayId, $userName, $description, $limit, $offset); - public function searchExperimentsByApplication($gatewayId, $userName, $applicationId); - public function searchExperimentsByApplicationWithPagination($gatewayId, $userName, $applicationId, $limit, $offset); - public function searchExperimentsByStatus($gatewayId, $userName, $experimentState); - public function searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset); - public function searchExperimentsByCreationTime($gatewayId, $userName, $fromTime, $toTime); - public function searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset); - public function searchExperiments($gatewayId, $userName, $filters, $limit, $offset); - public function getAllExperimentsInProject($projectId); - public function getAllExperimentsInProjectWithPagination($projectId, $limit, $offset); - public function getAllUserExperiments($gatewayId, $userName); - public function getAllUserExperimentsWithPagination($gatewayId, $userName, $limit, $offset); - public function createExperiment($gatewayId, \Airavata\Model\Workspace\Experiment\Experiment $experiment); - public function getExperiment($airavataExperimentId); - public function updateExperiment($airavataExperimentId, \Airavata\Model\Workspace\Experiment\Experiment $experiment); - public function updateExperimentConfiguration($airavataExperimentId, \Airavata\Model\Workspace\Experiment\UserConfigurationData $userConfiguration); - public function updateResourceScheduleing($airavataExperimentId, \Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling $resourceScheduling); - public function validateExperiment($airavataExperimentId); - public function launchExperiment($airavataExperimentId, $airavataCredStoreToken); - public function getExperimentStatus($airavataExperimentId); - public function getExperimentOutputs($airavataExperimentId); - public function getIntermediateOutputs($airavataExperimentId); - public function getJobStatuses($airavataExperimentId); - public function getJobDetails($airavataExperimentId); - public function getDataTransferDetails($airavataExperimentId); - public function cloneExperiment($existingExperimentID, $newExperimentName); - public function terminateExperiment($airavataExperimentId, $tokenId); - public function registerApplicationModule($gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule); - public function getApplicationModule($appModuleId); - public function updateApplicationModule($appModuleId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule); - public function getAllAppModules($gatewayId); - public function deleteApplicationModule($appModuleId); - public function registerApplicationDeployment($gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment); - public function getApplicationDeployment($appDeploymentId); - public function updateApplicationDeployment($appDeploymentId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment); - public function deleteApplicationDeployment($appDeploymentId); - public function getAllApplicationDeployments($gatewayId); - public function getAppModuleDeployedResources($appModuleId); - public function registerApplicationInterface($gatewayId, \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface); - public function getApplicationInterface($appInterfaceId); - public function updateApplicationInterface($appInterfaceId, \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface); - public function deleteApplicationInterface($appInterfaceId); - public function getAllApplicationInterfaceNames($gatewayId); - public function getAllApplicationInterfaces($gatewayId); - public function getApplicationInputs($appInterfaceId); - public function getApplicationOutputs($appInterfaceId); - public function getAvailableAppInterfaceComputeResources($appInterfaceId); - public function registerComputeResource(\Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription $computeResourceDescription); - public function getComputeResource($computeResourceId); - public function getAllComputeResourceNames(); - public function updateComputeResource($computeResourceId, \Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription $computeResourceDescription); - public function deleteComputeResource($computeResourceId); - public function addLocalSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission $localSubmission); - public function updateLocalSubmissionDetails($jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission $localSubmission); - public function getLocalJobSubmission($jobSubmissionId); - public function addSSHJobSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission); - public function getSSHJobSubmission($jobSubmissionId); - public function addUNICOREJobSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission $unicoreJobSubmission); - public function getUnicoreJobSubmission($jobSubmissionId); - public function addCloudJobSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission $cloudSubmission); - public function getCloudJobSubmission($jobSubmissionId); - public function updateSSHJobSubmissionDetails($jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission); - public function updateCloudJobSubmissionDetails($jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission $sshJobSubmission); - public function updateUnicoreJobSubmissionDetails($jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission $unicoreJobSubmission); - public function addLocalDataMovementDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\LOCALDataMovement $localDataMovement); - public function updateLocalDataMovementDetails($dataMovementInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\LOCALDataMovement $localDataMovement); - public function getLocalDataMovement($dataMovementId); - public function addSCPDataMovementDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\SCPDataMovement $scpDataMovement); - public function updateSCPDataMovementDetails($dataMovementInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\SCPDataMovement $scpDataMovement); - public function getSCPDataMovement($dataMovementId); - public function addUnicoreDataMovementDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\UnicoreDataMovement $unicoreDataMovement); - public function updateUnicoreDataMovementDetails($dataMovementInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\UnicoreDataMovement $unicoreDataMovement); - public function getUnicoreDataMovement($dataMovementId); - public function addGridFTPDataMovementDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\GridFTPDataMovement $gridFTPDataMovement); - public function updateGridFTPDataMovementDetails($dataMovementInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\GridFTPDataMovement $gridFTPDataMovement); - public function getGridFTPDataMovement($dataMovementId); - public function changeJobSubmissionPriority($jobSubmissionInterfaceId, $newPriorityOrder); - public function changeDataMovementPriority($dataMovementInterfaceId, $newPriorityOrder); - public function changeJobSubmissionPriorities($jobSubmissionPriorityMap); - public function changeDataMovementPriorities($dataMovementPriorityMap); - public function deleteJobSubmissionInterface($computeResourceId, $jobSubmissionInterfaceId); - public function deleteDataMovementInterface($computeResourceId, $dataMovementInterfaceId); - public function registerResourceJobManager(\Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager $resourceJobManager); - public function updateResourceJobManager($resourceJobManagerId, \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager $updatedResourceJobManager); - public function getResourceJobManager($resourceJobManagerId); - public function deleteResourceJobManager($resourceJobManagerId); - public function deleteBatchQueue($computeResourceId, $queueName); - public function registerGatewayResourceProfile(\Airavata\Model\AppCatalog\GatewayProfile\GatewayResourceProfile $gatewayResourceProfile); - public function getGatewayResourceProfile($gatewayID); - public function updateGatewayResourceProfile($gatewayID, \Airavata\Model\AppCatalog\GatewayProfile\GatewayResourceProfile $gatewayResourceProfile); - public function deleteGatewayResourceProfile($gatewayID); - public function addGatewayComputeResourcePreference($gatewayID, $computeResourceId, \Airavata\Model\AppCatalog\GatewayProfile\ComputeResourcePreference $computeResourcePreference); - public function getGatewayComputeResourcePreference($gatewayID, $computeResourceId); - public function getAllGatewayComputeResourcePreferences($gatewayID); - public function getAllGatewayComputeResources(); - public function updateGatewayComputeResourcePreference($gatewayID, $computeResourceId, \Airavata\Model\AppCatalog\GatewayProfile\ComputeResourcePreference $computeResourcePreference); - public function deleteGatewayComputeResourcePreference($gatewayID, $computeResourceId); - public function getAllWorkflows($gatewayId); - public function getWorkflow($workflowTemplateId); - public function deleteWorkflow($workflowTemplateId); - public function registerWorkflow($gatewayId, \Airavata\Model\Workflow $workflow); - public function updateWorkflow($workflowTemplateId, \Airavata\Model\Workflow $workflow); - public function getWorkflowTemplateId($workflowName); - public function isWorkflowExistWithName($workflowName); + /** + * Fetch Apache Airavata API version + * + * @param \Airavata\Model\Security\AuthzToken $authzToken + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\AuthorizationException + */ + public function getAPIVersion(\Airavata\Model\Security\AuthzToken $authzToken); + + /** + * @param \Airavata\Model\Workspace\Gateway $gateway + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function addGateway(\Airavata\Model\Workspace\Gateway $gateway); + + /** + * @param string $gatewayId + * @param \Airavata\Model\Workspace\Gateway $updatedGateway + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateGateway($gatewayId, \Airavata\Model\Workspace\Gateway $updatedGateway); + + /** + * @param string $gatewayId + * @return \Airavata\Model\Workspace\Gateway + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getGateway($gatewayId); + + /** + * @param string $gatewayId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function deleteGateway($gatewayId); + + /** + * @return \Airavata\Model\Workspace\Gateway[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllGateways(); + + /** + * @param string $gatewayId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function isGatewayExist($gatewayId); + + /** + * Generate and Register SSH Key Pair with Airavata Credential Store. + * + * @param gatewayId + * The identifier for the requested gateway. + * + * @param userName + * The User for which the credential should be registered. For community accounts, this user is the name of the + * community user name. For computational resources, this user name need not be the same user name on resoruces. + * + * @return airavataCredStoreToken + * An SSH Key pair is generated and stored in the credential store and associated with users or community account + * belonging to a gateway. + * + * + * + * @param string $gatewayId + * @param string $userName + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function generateAndRegisterSSHKeys($gatewayId, $userName); + + /** + * @param string $airavataCredStoreToken + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getSSHPubKey($airavataCredStoreToken); + + /** + * @param string $userName + * @return array + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllUserSSHPubKeys($userName); + + /** + * Creates a Project with basic metadata. + * A Project is a container of experiments. + * + * @param gatewayId + * The identifier for the requested gateway. + * + * @param Project + * The Project Object described in the workspaceModel + * + * + * @param string $gatewayId + * @param \Airavata\Model\Workspace\Project $project + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function createProject($gatewayId, \Airavata\Model\Workspace\Project $project); + + /** + * Update a Project + * + * + * @param string $projectId + * @param \Airavata\Model\Workspace\Project $updatedProject + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\ProjectNotFoundException + */ + public function updateProject($projectId, \Airavata\Model\Workspace\Project $updatedProject); + + /** + * Get a Project by ID + * + * + * @param string $projectId + * @return \Airavata\Model\Workspace\Project + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\ProjectNotFoundException + */ + public function getProject($projectId); + + /** + * @param string $projectId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\ProjectNotFoundException + */ + public function deleteProject($projectId); + + /** + * * Get all Project by user + * * + * * @param gatewayId + * * The identifier for the requested gateway. + * * + * * @param userName + * * The Project Object described in the workspaceModel + * * @deprecated Instead use getAllUserProjectsWithPagination + * * + * + * @param string $gatewayId + * @param string $userName + * @return \Airavata\Model\Workspace\Project[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllUserProjects($gatewayId, $userName); + + /** + * * Get all Project by user with pagination. Results will be ordered based + * * on creation time DESC + * * + * * @param gatewayId + * * The identifier for the requested gateway. + * * @param userName + * * The identifier of the user + * * @param limit + * * The amount results to be fetched + * * @param offset + * * The starting point of the results to be fetched + * * + * + * @param string $gatewayId + * @param string $userName + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Project[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllUserProjectsWithPagination($gatewayId, $userName, $limit, $offset); + + /** + * Get all Project for user by project name + * + * @param gatewayId + * The identifier for the requested gateway. + * @param userName + * The identifier of the user + * @param projectName + * The name of the project on which the results to be fetched + * @deprecated Instead use searchProjectsByProjectNameWithPagination + * + * @param string $gatewayId + * @param string $userName + * @param string $projectName + * @return \Airavata\Model\Workspace\Project[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchProjectsByProjectName($gatewayId, $userName, $projectName); + + /** + * Get all Project for user by project name with pagination.Results will be ordered based + * on creation time DESC + * + * @param gatewayId + * The identifier for the requested gateway. + * @param userName + * The identifier of the user + * @param projectName + * The name of the project on which the results to be fetched + * @param limit + * The amount results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param string $projectName + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Project[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchProjectsByProjectNameWithPagination($gatewayId, $userName, $projectName, $limit, $offset); + + /** + * Get all Project for user by project description + * @param gatewayId + * The identifier for the requested gateway. + * @param userName + * The identifier of the user + * @param description + * The description to be matched + * @deprecated Instead use searchProjectsByProjectDescWithPagination + * + * @param string $gatewayId + * @param string $userName + * @param string $description + * @return \Airavata\Model\Workspace\Project[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchProjectsByProjectDesc($gatewayId, $userName, $description); + + /** + * Search and get all Projects for user by project description with pagination. Results + * will be ordered based on creation time DESC + * + * @param gatewayId + * The identifier for the requested gateway. + * @param userName + * The identifier of the user + * @param description + * The description to be matched + * @param limit + * The amount results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param string $description + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Project[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchProjectsByProjectDescWithPagination($gatewayId, $userName, $description, $limit, $offset); + + /** + * Search Experiments by experiment name + * + * @param gatewayId + * Identifier of the requested gateway + * @param useNname + * Username of the requested user + * @param expName + * Experiment name to be matched + * @deprecated + * Instead use searchExperimentsByNameWithPagination + * + * + * @param string $gatewayId + * @param string $userName + * @param string $expName + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByName($gatewayId, $userName, $expName); + + /** + * Search Experiments by experiment name with pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param expName + * Experiment name to be matched + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param string $expName + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByNameWithPagination($gatewayId, $userName, $expName, $limit, $offset); + + /** + * Search Experiments by experiment name + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param description + * Experiment description to be matched + * @deprecated + * Instead use searchExperimentsByDescWithPagination + * + * @param string $gatewayId + * @param string $userName + * @param string $description + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByDesc($gatewayId, $userName, $description); + + /** + * Search Experiments by experiment name with pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param description + * Experiment description to be matched + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param string $description + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByDescWithPagination($gatewayId, $userName, $description, $limit, $offset); + + /** + * Search Experiments by application id + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param applicationId + * Application id to be matched + * @deprecated + * Instead use searchExperimentsByApplicationWithPagination + * + * @param string $gatewayId + * @param string $userName + * @param string $applicationId + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByApplication($gatewayId, $userName, $applicationId); + + /** + * Search Experiments by application id with pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param applicationId + * Application id to be matched + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param string $applicationId + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByApplicationWithPagination($gatewayId, $userName, $applicationId, $limit, $offset); + + /** + * Search Experiments by experiment status + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param experimentState + * Experiement state to be matched + * @deprecated + * Instead use searchExperimentsByStatusWithPagination + * + * @param string $gatewayId + * @param string $userName + * @param int $experimentState + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByStatus($gatewayId, $userName, $experimentState); + + /** + * Search Experiments by experiment status with pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param experimentState + * Experiement state to be matched + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param int $experimentState + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByStatusWithPagination($gatewayId, $userName, $experimentState, $limit, $offset); + + /** + * Search Experiments by experiment creation time + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param fromTime + * Start time of the experiments creation time + * @param toTime + * End time of the experiement creation time + * @deprecated + * Instead use searchExperimentsByCreationTimeWithPagination + * + * @param string $gatewayId + * @param string $userName + * @param int $fromTime + * @param int $toTime + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByCreationTime($gatewayId, $userName, $fromTime, $toTime); + + /** + * Search Experiments by experiment creation time with pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param fromTime + * Start time of the experiments creation time + * @param toTime + * End time of the experiement creation time + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param int $fromTime + * @param int $toTime + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperimentsByCreationTimeWithPagination($gatewayId, $userName, $fromTime, $toTime, $limit, $offset); + + /** + * Search Experiments by using multiple filter criteria with pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requested gateway + * @param userName + * Username of the requested user + * @param filters + * map of multiple filter criteria. + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param array $filters + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\ExperimentSummary[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function searchExperiments($gatewayId, $userName, array $filters, $limit, $offset); + + /** + * Get Experiment Statisitics for the given gateway for a specific time period + * @param gatewayId + * Identifier of the requested gateway + * @param fromTime + * Starting date time + * @param toTime + * Ending data time + * + * + * @param string $gatewayId + * @param int $fromTime + * @param int $toTime + * @return \Airavata\Model\Workspace\Experiment\ExperimentStatistics + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getExperimentStatistics($gatewayId, $fromTime, $toTime); + + /** + * Get all Experiments within a Project + * + * @param projectId + * Identifier of the project + * @deprecated + * Instead use getAllExperimentsInProjectWithPagination + * + * @param string $projectId + * @return \Airavata\Model\Workspace\Experiment\Experiment[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\ProjectNotFoundException + */ + public function getAllExperimentsInProject($projectId); + + /** + * Get all Experiments within project with pagination. Results will be sorted + * based on creation time DESC + * + * @param projectId + * Identifier of the project + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $projectId + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\Experiment[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\ProjectNotFoundException + */ + public function getAllExperimentsInProjectWithPagination($projectId, $limit, $offset); + + /** + * Get all Experiments by user + * + * @param gatewayId + * Identifier of the requesting gateway + * @param userName + * Username of the requested user + * @deprecated + * Instead use getAllUserExperimentsWithPagination + * + * @param string $gatewayId + * @param string $userName + * @return \Airavata\Model\Workspace\Experiment\Experiment[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllUserExperiments($gatewayId, $userName); + + /** + * Get all Experiments by user pagination. Results will be sorted + * based on creation time DESC + * + * @param gatewayId + * Identifier of the requesting gateway + * @param userName + * Username of the requested user + * @param limit + * Amount of results to be fetched + * @param offset + * The starting point of the results to be fetched + * + * @param string $gatewayId + * @param string $userName + * @param int $limit + * @param int $offset + * @return \Airavata\Model\Workspace\Experiment\Experiment[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllUserExperimentsWithPagination($gatewayId, $userName, $limit, $offset); + + /** + * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed + * but inferred from the authentication header. This experiment is just a persistent place holder. The client + * has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except + * registering the experiment in a persistent store. + * + * @param basicExperimentMetadata + * The create experiment will require the basic experiment metadata like the name and description, intended user, + * the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment + * the ExperimentMetadata is a required field. + * + * @return + * The server-side generated.airavata.registry.core.experiment.globally unique identifier. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + * @param string $gatewayId + * @param \Airavata\Model\Workspace\Experiment\Experiment $experiment + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function createExperiment($gatewayId, \Airavata\Model\Workspace\Experiment\Experiment $experiment); + + /** + * Fetch previously created experiment metadata. + * + * @param airavataExperimentId + * The identifier for the requested experiment. This is returned during the create experiment step. + * + * @return experimentMetada + * This method will return the previously stored experiment metadata. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + * @param string $airavataExperimentId + * @return \Airavata\Model\Workspace\Experiment\Experiment A structure holding the experiment metadata and its child models. + * + * userName: + * The user name of the targeted gateway end user on whose behalf the experiment is being created. + * the associated gateway identity can only be inferred from the security hand-shake so as to avoid + * authorized Airavata Clients mimicking an unauthorized request. If a gateway is not registered with + * Airavata, an authorization exception is thrown. + * + * experimentName: + * The name of the experiment as defined by the user. The name need not be unique as uniqueness is enforced + * by the generated experiment id. + * + * experimentDescription: + * The verbose description of the experiment. This is an optional parameter. + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getExperiment($airavataExperimentId); + + /** + * Configure a previously created experiment with required inputs, scheduling and other quality of service + * parameters. This method only updates the experiment object within the registry. The experiment has to be launched + * to make it actionable by the server. + * + * @param airavataExperimentId + * The identifier for the requested experiment. This is returned during the create experiment step. + * + * @param experimentConfigurationData + * The configuration information of the experiment with application input parameters, computational resource scheduling + * information, special input output handling and additional quality of service parameters. + * + * @return + * This method call does not have a return value. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + * @param string $airavataExperimentId + * @param \Airavata\Model\Workspace\Experiment\Experiment $experiment + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateExperiment($airavataExperimentId, \Airavata\Model\Workspace\Experiment\Experiment $experiment); + + /** + * @param string $airavataExperimentId + * @param \Airavata\Model\Workspace\Experiment\UserConfigurationData $userConfiguration + */ + public function updateExperimentConfiguration($airavataExperimentId, \Airavata\Model\Workspace\Experiment\UserConfigurationData $userConfiguration); + + /** + * @param string $airavataExperimentId + * @param \Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling $resourceScheduling + */ + public function updateResourceScheduleing($airavataExperimentId, \Airavata\Model\Workspace\Experiment\ComputationalResourceScheduling $resourceScheduling); + + /** + * * + * * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched. + * * + * * @param experimentID + * * @return sucess/failure + * * + * * + * + * @param string $airavataExperimentId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function validateExperiment($airavataExperimentId); + + /** + * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate + * notifications and intermediate and output data will be subsequently available for this experiment. + * + * @param airavataExperimentId + * The identifier for the requested experiment. This is returned during the create experiment step. + * + * @param airavataCredStoreToken : + * A requirement to execute experiments within Airavata is to first register the targeted remote computational account + * credentials with Airavata Credential Store. The administrative API (related to credential store) will return a + * generated token associated with the registered credentials. The client has to security posses this token id and is + * required to pass it to Airavata Server for all execution requests. + * Note: At this point only the credential store token is required so the string is directly passed here. In future if + * if more security credentials are enables, then the structure ExecutionSecurityParameters should be used. + * Note: This parameter is not persisted within Airavata Registry for security reasons. + * + * @return + * This method call does not have a return value. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + * @param string $airavataExperimentId + * @param string $airavataCredStoreToken + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + * @throws \Airavata\API\Error\LaunchValidationException + */ + public function launchExperiment($airavataExperimentId, $airavataCredStoreToken); + + /** + * @param string $airavataExperimentId + * @return \Airavata\Model\Workspace\Experiment\ExperimentStatus + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getExperimentStatus($airavataExperimentId); + + /** + * @param string $airavataExperimentId + * @return \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getExperimentOutputs($airavataExperimentId); + + /** + * @param string $airavataExperimentId + * @return \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getIntermediateOutputs($airavataExperimentId); + + /** + * @param string $airavataExperimentId + * @return array + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getJobStatuses($airavataExperimentId); + + /** + * @param string $airavataExperimentId + * @return \Airavata\Model\Workspace\Experiment\JobDetails[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getJobDetails($airavataExperimentId); + + /** + * @param string $airavataExperimentId + * @return \Airavata\Model\Workspace\Experiment\DataTransferDetails[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getDataTransferDetails($airavataExperimentId); + + /** + * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata. + * The client has to subsequently update this configuration if needed and launch the cloned experiment. + * + * @param newExperimentName + * experiment name that should be used in the cloned experiment + * + * @param updatedExperiment + * Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require + * the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment + * should be shared public by default. + * + * @return + * The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + * @param string $existingExperimentID + * @param string $newExperimentName + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function cloneExperiment($existingExperimentID, $newExperimentName); + + /** + * Terminate a running experiment. + * + * @param airavataExperimentId + * The identifier for the requested experiment. This is returned during the create experiment step. + * + * @return + * This method call does not have a return value. + * + * @throws org.apache.airavata.model.error.InvalidRequestException + * For any incorrect forming of the request itself. + * + * @throws org.apache.airavata.model.error.ExperimentNotFoundException + * If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown. + * + * @throws org.apache.airavata.model.error.AiravataClientException + * The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve: + * + * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative + * step, then Airavata Registry will not have a provenance area setup. The client has to follow + * gateway registration steps and retry this request. + * + * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined. + * For now this is a place holder. + * + * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake + * is implemented, the authorization will be more substantial. + * + * @throws org.apache.airavata.model.error.AiravataSystemException + * This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client + * rather an Airavata Administrator will be notified to take corrective action. + * + * + * @param string $airavataExperimentId + * @param string $tokenId + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\ExperimentNotFoundException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function terminateExperiment($airavataExperimentId, $tokenId); + + /** + * Register a Application Module. + * + * @param applicationModule + * Application Module Object created from the datamodel. + * + * @return appModuleId + * Returns a server-side generated airavata appModule globally unique identifier. + * + * + * @param string $gatewayId + * @param \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function registerApplicationModule($gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule); + + /** + * Fetch a Application Module. + * + * @param appModuleId + * The identifier for the requested application module + * + * @return applicationModule + * Returns a application Module Object. + * + * + * @param string $appModuleId + * @return \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule Application Module Information. A module has to be registered before registering a deployment. + * + * appModuleId: Airavata Internal Unique Job ID. This is set by the registry. + * + * appModuleName: + * Name of the application module. + * + * appModuleVersion: + * Version of the application. + * + * appModuleDescription: + * Descriprion of the Module + * + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getApplicationModule($appModuleId); + + /** + * Update a Application Module. + * + * @param appModuleId + * The identifier for the requested application module to be updated. + * + * @param applicationModule + * Application Module Object created from the datamodel. + * + * @return status + * Returns a success/failure of the update. + * + * + * @param string $appModuleId + * @param \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateApplicationModule($appModuleId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule $applicationModule); + + /** + * @param string $gatewayId + * @return \Airavata\Model\AppCatalog\AppDeployment\ApplicationModule[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllAppModules($gatewayId); + + /** + * Delete a Application Module. + * + * @param appModuleId + * The identifier for the requested application module to be deleted. + * + * @return status + * Returns a success/failure of the deletion. + * + * + * @param string $appModuleId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function deleteApplicationModule($appModuleId); + + /** + * Register a Application Deployment. + * + * @param applicationModule + * Application Module Object created from the datamodel. + * + * @return appDeploymentId + * Returns a server-side generated airavata appDeployment globally unique identifier. + * + * + * @param string $gatewayId + * @param \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function registerApplicationDeployment($gatewayId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment); + + /** + * Fetch a Application Deployment. + * + * @param appDeploymentId + * The identifier for the requested application module + * + * @return applicationDeployment + * Returns a application Deployment Object. + * + * + * @param string $appDeploymentId + * @return \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription Application Deployment Description + * + * appDeploymentId: Airavata Internal Unique Job ID. This is set by the registry. + * + * appModuleName: + * Application Module Name. This has to be precise describing the binary. + * + * computeHostId: + * This ID maps application deployment to a particular resource previously described within Airavata. + * Example: Stampede is first registered and refered when registering WRF. + * + * moduleLoadCmd: + * Command string to load modules. This will be placed in the job submisison + * Ex: module load amber + * + * libPrependPaths: + * prepend to a path variable the value + * + * libAppendPaths: + * append to a path variable the value + * + * setEnvironment: + * assigns to the environment variable "NAME" the value + * + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getApplicationDeployment($appDeploymentId); + + /** + * Update a Application Deployment. + * + * @param appDeploymentId + * The identifier for the requested application deployment to be updated. + * + * @param appDeployment + * Application Deployment Object created from the datamodel. + * + * @return status + * Returns a success/failure of the update. + * + * + * @param string $appDeploymentId + * @param \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateApplicationDeployment($appDeploymentId, \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription $applicationDeployment); + + /** + * Delete a Application deployment. + * + * @param appDeploymentId + * The identifier for the requested application deployment to be deleted. + * + * @return status + * Returns a success/failure of the deletion. + * + * + * @param string $appDeploymentId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function deleteApplicationDeployment($appDeploymentId); + + /** + * Fetch all Application Deployment Descriptions. + * + * @return list<applicationDeployment. + * Returns the list of all application Deployment Objects. + * + * + * @param string $gatewayId + * @return \Airavata\Model\AppCatalog\AppDeployment\ApplicationDeploymentDescription[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllApplicationDeployments($gatewayId); + + /** + * Fetch a list of Deployed Compute Hosts. + * + * @param appModuleId + * The identifier for the requested application module + * + * @return list<string> + * Returns a list of Deployed Resources. + * + * + * @param string $appModuleId + * @return string[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAppModuleDeployedResources($appModuleId); + + /** + * Register a Application Interface. + * + * @param applicationModule + * Application Module Object created from the datamodel. + * + * @return appInterfaceId + * Returns a server-side generated airavata application interface globally unique identifier. + * + * + * @param string $gatewayId + * @param \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function registerApplicationInterface($gatewayId, \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface); + + /** + * Fetch a Application Interface. + * + * @param appInterfaceId + * The identifier for the requested application module + * + * @return applicationInterface + * Returns a application Interface Object. + * + * + * + * @param string $appInterfaceId + * @return \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription Application Interface Description + * + * applicationModules: + * Associate all application modules with versions which interface is applicable to. + * + * applicationInputs: + * Inputs to be passed to the application + * + * applicationOutputs: + * Outputs generated from the application + * + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getApplicationInterface($appInterfaceId); + + /** + * Update a Application Interface. + * + * @param appInterfaceId + * The identifier for the requested application deployment to be updated. + * + * @param appInterface + * Application Interface Object created from the datamodel. + * + * @return status + * Returns a success/failure of the update. + * + * + * + * @param string $appInterfaceId + * @param \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateApplicationInterface($appInterfaceId, \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription $applicationInterface); + + /** + * Delete a Application Interface. + * + * @param appInterfaceId + * The identifier for the requested application interface to be deleted. + * + * @return status + * Returns a success/failure of the deletion. + * + * + * + * @param string $appInterfaceId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function deleteApplicationInterface($appInterfaceId); + + /** + * Fetch name and id of Application Interface documents. + * + * + * @return map<applicationId, applicationInterfaceNames> + * Returns a list of application interfaces with corresponsing id's + * + * + * @param string $gatewayId + * @return array + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllApplicationInterfaceNames($gatewayId); + + /** + * Fetch all Application Interface documents. + * + * + * @return map<applicationId, applicationInterfaceNames> + * Returns a list of application interfaces documents + * + * + * @param string $gatewayId + * @return \Airavata\Model\AppCatalog\AppInterface\ApplicationInterfaceDescription[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllApplicationInterfaces($gatewayId); + + /** + * Fetch the list of Application Inputs. + * + * @param appInterfaceId + * The identifier for the requested application interface + * + * @return list<applicationInterfaceModel.InputDataObjectType> + * Returns a list of application inputs. + * + * + * @param string $appInterfaceId + * @return \Airavata\Model\AppCatalog\AppInterface\InputDataObjectType[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getApplicationInputs($appInterfaceId); + + /** + * Fetch the list of Application Outputs. + * + * @param appInterfaceId + * The identifier for the requested application interface + * + * @return list<applicationInterfaceModel.OutputDataObjectType> + * Returns a list of application outputs. + * + * + * @param string $appInterfaceId + * @return \Airavata\Model\AppCatalog\AppInterface\OutputDataObjectType[] + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getApplicationOutputs($appInterfaceId); + + /** + * Fetch a list of all deployed Compute Hosts for a given application interfaces. + * + * @param appInterfaceId + * The identifier for the requested application interface + * + * @return map<computeResourceId, computeResourceName> + * A map of registered compute resource id's and their corresponding hostnames. + * Deployments of each modules listed within the interfaces will be listed. + * + * + * @param string $appInterfaceId + * @return array + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAvailableAppInterfaceComputeResources($appInterfaceId); + + /** + * Register a Compute Resource. + * + * @param computeResourceDescription + * Compute Resource Object created from the datamodel. + * + * @return computeResourceId + * Returns a server-side generated airavata compute resource globally unique identifier. + * + * + * @param \Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription $computeResourceDescription + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function registerComputeResource(\Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription $computeResourceDescription); + + /** + * Fetch the given Compute Resource. + * + * @param computeResourceId + * The identifier for the requested compute resource + * + * @return computeResourceDescription + * Compute Resource Object created from the datamodel.. + * + * + * @param string $computeResourceId + * @return \Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription Computational Resource Description + * + * computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource. + * + * hostName: + * Fully Qualified Host Name. + * + * hostAliases: + * Aliases if any. + * + * ipAddress: + * IP Addresses of the Resource. + * + * resourceDescription: + * A user friendly description of the resource. + * + * JobSubmissionProtocols: + * A computational resources may have one or more ways of submitting Jobs. This structure + * will hold all available mechanisms to interact with the resource. + * The key is the priority + * + * DataMovementProtocol: + * Option to specify a prefered data movement mechanism of the available options. + * + * fileSystems: + * Map of file systems type and the path. + * + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getComputeResource($computeResourceId); + + /** + * Fetch all registered Compute Resources. + * + * @return A map of registered compute resource id's and thier corresponding hostnames. + * Compute Resource Object created from the datamodel.. + * + * + * @return array + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getAllComputeResourceNames(); + + /** + * Update a Compute Resource. + * + * @param computeResourceId + * The identifier for the requested compute resource to be updated. + * + * @param computeResourceDescription + * Compute Resource Object created from the datamodel. + * + * @return status + * Returns a success/failure of the update. + * + * + * @param string $computeResourceId + * @param \Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription $computeResourceDescription + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateComputeResource($computeResourceId, \Airavata\Model\AppCatalog\ComputeResource\ComputeResourceDescription $computeResourceDescription); + + /** + * Delete a Compute Resource. + * + * @param computeResourceId + * The identifier for the requested compute resource to be deleted. + * + * @return status + * Returns a success/failure of the deletion. + * + * + * @param string $computeResourceId + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function deleteComputeResource($computeResourceId); + + /** + * Add a Local Job Submission details to a compute resource + * App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces. + * + * @param computeResourceId + * The identifier of the compute resource to which JobSubmission protocol to be added + * + * @param priorityOrder + * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero. + * + * @param localSubmission + * The LOCALSubmission object to be added to the resource. + * + * @return status + * Returns the unique job submission id. + * + * + * @param string $computeResourceId + * @param int $priorityOrder + * @param \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission $localSubmission + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function addLocalSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission $localSubmission); + + /** + * Update the given Local Job Submission details + * + * @param jobSubmissionInterfaceId + * The identifier of the JobSubmission Interface to be updated. + * + * @param localSubmission + * The LOCALSubmission object to be updated. + * + * @return status + * Returns a success/failure of the deletion. + * + * + * @param string $jobSubmissionInterfaceId + * @param \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission $localSubmission + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateLocalSubmissionDetails($jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission $localSubmission); + + /** + * This method returns localJobSubmission object + * @param jobSubmissionInterfaceId + * The identifier of the JobSubmission Interface to be retrieved. + * @return LOCALSubmission instance + * + * + * @param string $jobSubmissionId + * @return \Airavata\Model\AppCatalog\ComputeResource\LOCALSubmission Locally Fork Jobs as OS processes + * + * alternativeSSHHostName: + * If the login to ssh is different than the hostname itself, specify it here + * + * sshPort: + * If a non-default port needs to used, specify it. + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getLocalJobSubmission($jobSubmissionId); + + /** + * Add a SSH Job Submission details to a compute resource + * App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces. + * + * @param computeResourceId + * The identifier of the compute resource to which JobSubmission protocol to be added + * + * @param priorityOrder + * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero. + * + * @param sshJobSubmission + * The SSHJobSubmission object to be added to the resource. + * + * @return status + * Returns the unique job submission id. + * + * + * @param string $computeResourceId + * @param int $priorityOrder + * @param \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function addSSHJobSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission); + + /** + * This method returns SSHJobSubmission object + * @param jobSubmissionInterfaceId + * The identifier of the JobSubmission Interface to be retrieved. + * @return SSHJobSubmission instance + * + * + * @param string $jobSubmissionId + * @return \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission Authenticate using Secured Shell + * + * alternativeSSHHostName: + * If the login to ssh is different than the hostname itself, specify it here + * + * sshPort: + * If a non-default port needs to used, specify it. + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getSSHJobSubmission($jobSubmissionId); + + /** + * Add a UNICORE Job Submission details to a compute resource + * App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces. + * + * @param computeResourceId + * The identifier of the compute resource to which JobSubmission protocol to be added + * + * @param priorityOrder + * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero. + * + * @param unicoreJobSubmission + * The UnicoreJobSubmission object to be added to the resource. + * + * @return status + * Returns the unique job submission id. + * + * + * @param string $computeResourceId + * @param int $priorityOrder + * @param \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission $unicoreJobSubmission + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function addUNICOREJobSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission $unicoreJobSubmission); + + /** + * * This method returns UnicoreJobSubmission object + * * @param jobSubmissionInterfaceId + * * The identifier of the JobSubmission Interface to be retrieved. + * * @return UnicoreJobSubmission instance + * * + * + * @param string $jobSubmissionId + * @return \Airavata\Model\AppCatalog\ComputeResource\UnicoreJobSubmission Unicore Job Submission + * + * unicoreEndPointURL: + * unicoreGateway End Point. The provider will query this service to fetch required service end points. + * authenticationMode + * The authenticationMode defines the way certificate is fetched. + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getUnicoreJobSubmission($jobSubmissionId); + + /** + * * Add a Cloud Job Submission details to a compute resource + * * App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces. + * * + * * @param computeResourceId + * * The identifier of the compute resource to which JobSubmission protocol to be added + * * + * * @param priorityOrder + * * Specify the priority of this job manager. If this is the only jobmanager, the priority can be zero. + * * + * * @param sshJobSubmission + * * The SSHJobSubmission object to be added to the resource. + * * + * * @return status + * * Returns the unique job submission id. + * * + * + * @param string $computeResourceId + * @param int $priorityOrder + * @param \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission $cloudSubmission + * @return string + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function addCloudJobSubmissionDetails($computeResourceId, $priorityOrder, \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission $cloudSubmission); + + /** + * * This method returns cloudJobSubmission object + * * @param jobSubmissionInterfaceI + * * The identifier of the JobSubmission Interface to be retrieved. + * * @return CloudJobSubmission instance + * * + * + * @param string $jobSubmissionId + * @return \Airavata\Model\AppCatalog\ComputeResource\CloudJobSubmission Cloud Job Submission + * + * + * + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function getCloudJobSubmission($jobSubmissionId); + + /** + * Update the given SSH Job Submission details + * + * @param jobSubmissionInterfaceId + * The identifier of the JobSubmission Interface to be updated. + * + * @param sshJobSubmission + * The SSHJobSubmission object to be updated. + * + * @return status + * Returns a success/failure of the deletion. + * + * + * @param string $jobSubmissionInterfaceId + * @param \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission + * @return bool + * @throws \Airavata\API\Error\InvalidRequestException + * @throws \Airavata\API\Error\AiravataClientException + * @throws \Airavata\API\Error\AiravataSystemException + */ + public function updateSSHJobSubmissionDetails($jobSubmissionInterfaceId, \Airavata\Model\AppCatalog\ComputeResource\SSHJobSubmission $sshJobSubmission); + + /** + * Update the given SSH Job Submission details + * + * @param jobSubmissionInterfaceId + * The identifier of the JobSubmission Interface to be updated. + * + * @param cloudJobSubmission + * The CloudJobSubmission object to be updated. + * + * @return status + * Re
<TRUNCATED>
