use of org.apache.airavata.registry.api.exception.RegistryServiceException in project airavata by apache.
the class RegistryServerHandler method updateUserComputeResourcePreference.
/**
* Update a Compute Resource Preference to a registered user resource profile.
* @param userId identifier for user data model
* @param gatewayID The identifier for the gateway profile to be updated.
* @param computeResourceId Preferences related to a particular compute resource
* @param userComputeResourcePreference The ComputeResourcePreference object to be updated to the resource profile.
* @return status
* Returns a success/failure of the updation.
*/
@Override
public boolean updateUserComputeResourcePreference(String userId, String gatewayID, String computeResourceId, UserComputeResourcePreference userComputeResourcePreference) throws RegistryServiceException, TException {
try {
if (!ExpCatResourceUtils.isUserExist(userId, gatewayID)) {
logger.error("user does not exist.Please provide a valid user id...");
throw new RegistryServiceException("user does not exist.Please provide a valid user id...");
}
appCatalog = RegistryFactory.getAppCatalog();
UsrResourceProfile userProfile = appCatalog.getUserResourceProfile();
UserResourceProfile profile = userProfile.getUserResourceProfile(userId, gatewayID);
List<UserComputeResourcePreference> userComputeResourcePreferences = profile.getUserComputeResourcePreferences();
UserComputeResourcePreference preferenceToRemove = null;
for (UserComputeResourcePreference preference : userComputeResourcePreferences) {
if (preference.getComputeResourceId().equals(computeResourceId)) {
preferenceToRemove = preference;
break;
}
}
if (preferenceToRemove != null) {
profile.getUserComputeResourcePreferences().remove(preferenceToRemove);
}
profile.getUserComputeResourcePreferences().add(userComputeResourcePreference);
userProfile.updateUserResourceProfile(userId, gatewayID, profile);
logger.debug("Airavata updated compute resource preference with gateway id : " + gatewayID + " and for compute resource id : " + computeResourceId);
return true;
} catch (AppCatalogException e) {
logger.error(userId, "Error while reading user compute resource preference...", e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage("Error while updating user compute resource preference. More info : " + e.getMessage());
throw exception;
} catch (RegistryException e) {
logger.error(userId, "Error while retrieving user resource profile...", e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage("Error while retrieving user resource profile. More info : " + e.getMessage());
throw exception;
}
}
use of org.apache.airavata.registry.api.exception.RegistryServiceException in project airavata by apache.
the class RegistryServerHandler method getAllGateways.
/**
* Get All the Gateways Connected to Airavata.
*/
@Override
public List<Gateway> getAllGateways() throws RegistryServiceException, TException {
try {
List<Gateway> gateways = new ArrayList<Gateway>();
experimentCatalog = RegistryFactory.getDefaultExpCatalog();
List<Object> list = experimentCatalog.get(ExperimentCatalogModelType.GATEWAY, null, null);
for (Object gateway : list) {
gateways.add((Gateway) gateway);
}
logger.debug("Airavata retrieved all available gateways...");
return gateways;
} catch (RegistryException e) {
logger.error("Error while getting all the gateways", e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage("Error while getting all the gateways. More info : " + e.getMessage());
throw exception;
}
}
use of org.apache.airavata.registry.api.exception.RegistryServiceException in project airavata by apache.
the class RegistryServerHandler method addUserStoragePreference.
/**
* Add a Storage Resource Preference to a registered gateway profile.
*
* @param gatewayID The identifier of the gateway profile to be added.
* @param storageResourceId Preferences related to a particular compute resource
* @param dataStoragePreference
* @return status
* Returns a success/failure of the addition. If a profile already exists, this operation will fail.
* Instead an update should be used.
*/
@Override
public boolean addUserStoragePreference(String userId, String gatewayID, String storageResourceId, UserStoragePreference dataStoragePreference) throws RegistryServiceException, TException {
try {
if (!ExpCatResourceUtils.isUserExist(userId, gatewayID)) {
logger.error("user does not exist.Please provide a valid user id...");
throw new RegistryServiceException("user does not exist.Please provide a valid user id...");
}
appCatalog = RegistryFactory.getAppCatalog();
UsrResourceProfile userProfile = appCatalog.getUserResourceProfile();
if (!userProfile.isUserResourceProfileExists(userId, gatewayID)) {
throw new RegistryServiceException("User resource profile with user id'" + userId + " & gateway Id" + gatewayID + "' does not exist!!!");
}
UserResourceProfile profile = userProfile.getUserResourceProfile(userId, gatewayID);
// gatewayProfile.removeGatewayResourceProfile(gatewayID);
dataStoragePreference.setStorageResourceId(storageResourceId);
profile.addToUserStoragePreferences(dataStoragePreference);
userProfile.updateUserResourceProfile(userId, gatewayID, profile);
logger.debug("Airavata added storage resource preference with gateway id : " + gatewayID + " and for storage resource id : " + storageResourceId);
return true;
} catch (AppCatalogException e) {
logger.error(gatewayID, "Error while registering user resource profile preference...", e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage("Error while registering user resource profile preference. More info : " + e.getMessage());
throw exception;
} catch (RegistryException e) {
logger.error(userId, "Error while retrieving user resource profile...", e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage("Error while retrieving user resource profile. More info : " + e.getMessage());
throw exception;
}
}
use of org.apache.airavata.registry.api.exception.RegistryServiceException in project airavata by apache.
the class RegistryServerHandler method getUnicoreJobSubmission.
/**
* *
* * This method returns UnicoreJobSubmission object
* *
* * @param jobSubmissionInterfaceId
* * The identifier of the JobSubmission Interface to be retrieved.
* * @return UnicoreJobSubmission instance
* *
* *
*
* @param jobSubmissionId
*/
@Override
public UnicoreJobSubmission getUnicoreJobSubmission(String jobSubmissionId) throws RegistryServiceException, TException {
try {
appCatalog = RegistryFactory.getAppCatalog();
UnicoreJobSubmission unicoreJobSubmission = appCatalog.getComputeResource().getUNICOREJobSubmission(jobSubmissionId);
logger.debug("Airavata retrieved UNICORE job submission for job submission interface id: " + jobSubmissionId);
return unicoreJobSubmission;
} catch (AppCatalogException e) {
String errorMsg = "Error while retrieving Unicore job submission interface to resource compute resource...";
logger.error(jobSubmissionId, errorMsg, e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage(errorMsg + e.getMessage());
throw exception;
}
}
use of org.apache.airavata.registry.api.exception.RegistryServiceException in project airavata by apache.
the class RegistryServerHandler method updateResourceScheduleing.
@Override
public void updateResourceScheduleing(String airavataExperimentId, ComputationalResourceSchedulingModel resourceScheduling) throws RegistryServiceException, TException {
try {
experimentCatalog = RegistryFactory.getDefaultExpCatalog();
if (!experimentCatalog.isExist(ExperimentCatalogModelType.EXPERIMENT, airavataExperimentId)) {
logger.debug(airavataExperimentId, "Update resource scheduling failed, experiment {} doesn't exist.", airavataExperimentId);
throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
}
ExperimentStatus experimentStatus = getExperimentStatusInternal(airavataExperimentId);
if (experimentStatus != null) {
ExperimentState experimentState = experimentStatus.getState();
switch(experimentState) {
case CREATED:
case VALIDATED:
case CANCELED:
case FAILED:
experimentCatalog.add(ExpCatChildDataType.PROCESS_RESOURCE_SCHEDULE, resourceScheduling, airavataExperimentId);
logger.debug(airavataExperimentId, "Successfully updated resource scheduling for the experiment {}.", airavataExperimentId);
break;
default:
logger.error(airavataExperimentId, "Error while updating scheduling info. Update experiment is only valid for experiments " + "with status CREATED, VALIDATED, CANCELLED, FAILED and UNKNOWN. Make sure the given " + "experiment is in one of above statuses... ");
AiravataSystemException exception = new AiravataSystemException();
exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
exception.setMessage("Error while updating experiment. Update experiment is only valid for experiments " + "with status CREATED, VALIDATED, CANCELLED, FAILED and UNKNOWN. Make sure the given " + "experiment is in one of above statuses... ");
throw exception;
}
}
} catch (Exception e) {
logger.error(airavataExperimentId, "Error while updating scheduling info", e);
RegistryServiceException exception = new RegistryServiceException();
exception.setMessage("Error while updating scheduling info. " + "Update experiment is only valid for experiments " + "with status CREATED, VALIDATED, CANCELLED, FAILED and UNKNOWN. Make sure the given " + "experiment is in one of above statuses... " + e.getMessage());
throw exception;
}
}
Aggregations