use of com.emc.storageos.model.errorhandling.ServiceErrorRestRep in project coprhd-controller by CoprHD.
the class BaseServiceCodeExceptionTest method assertInternalException.
protected void assertInternalException(final StatusType expectedStatus, final ServiceCode expectedCode, final String expectedMessage, final InternalException actualServiceCoded) {
final Response response = mapper.toResponse(actualServiceCoded);
assertResponse(expectedStatus.getStatusCode(), response);
Object entity = response.getEntity();
Assert.assertTrue("The response is not a ServiceError", entity instanceof ServiceErrorRestRep);
final ServiceErrorRestRep error = (ServiceErrorRestRep) entity;
assertServiceError(expectedMessage, expectedCode.getCode(), expectedCode.getSummary(), error);
}
use of com.emc.storageos.model.errorhandling.ServiceErrorRestRep in project coprhd-controller by CoprHD.
the class TaskUtil method taskToError.
private static ServiceErrorRestRep taskToError(TaskResourceRep task) {
ServiceErrorRestRep serviceError = task.getServiceError();
if (task.getState() == null) {
serviceError = new ServiceErrorRestRep();
serviceError.setCodeDescription("Task state is null. Unable to determine success of task");
serviceError.setDetailedMessage("");
} else if (serviceError == null) {
serviceError = new ServiceErrorRestRep();
serviceError.setCodeDescription(task.getMessage() == null ? "No Message" : task.getMessage());
serviceError.setDetailedMessage("");
}
return serviceError;
}
use of com.emc.storageos.model.errorhandling.ServiceErrorRestRep in project coprhd-controller by CoprHD.
the class ServiceErrorsException method getLocalizedMessage.
@Override
public String getLocalizedMessage() {
StringBuilder sb = new StringBuilder();
// Printf-style format strings should not lead to unexpected behavior at runtime
// using %n instead of \n
sb.append(String.format("%s Error%s occurred%n", serviceErrors.size(), serviceErrors.size() > 1 ? "s" : ""));
for (ServiceErrorRestRep error : serviceErrors) {
sb.append(String.format("Error %s: %s. %s%n", error.getCode(), error.getCodeDescription(), error.getDetailedMessage()));
}
return sb.toString();
}
use of com.emc.storageos.model.errorhandling.ServiceErrorRestRep in project coprhd-controller by CoprHD.
the class Validator method refreshUser.
/**
* Make an internal REST API call to the authsvc in order to reload the user in the
* DB.
*
* @param username
*/
public static void refreshUser(String username) {
String endpoint = null;
int attempts = 0;
while (attempts < _MAX_VALIDATION_RETRIES) {
_log.debug("Refresh user, attempt {}", ++attempts);
AuthSvcInternalApiClientIterator authSvcClientItr = new AuthSvcInternalApiClientIterator(_authSvcEndPointLocator, _coordinator);
try {
if (authSvcClientItr.hasNext()) {
endpoint = authSvcClientItr.peek().toString();
final ClientResponse response = authSvcClientItr.put(URI.create(_URI_REFRESH + "?username=" + URLEncoder.encode(username, "UTF-8")), null);
final int status = response.getStatus();
_log.debug("Status: {}", status);
if (status == ClientResponse.Status.OK.getStatusCode()) {
return;
} else if (status == ClientResponse.Status.BAD_REQUEST.getStatusCode()) {
throw APIException.badRequests.principalSearchFailed(username);
} else if (status == ClientResponse.Status.INTERNAL_SERVER_ERROR.getStatusCode()) {
ServiceErrorRestRep error = response.getEntity(ServiceErrorRestRep.class);
// if we got here, it means that we refresh user has failed
throw SecurityException.fatals.failedToRefreshUser(error.getDetailedMessage());
} else {
_log.error("Unexpected response code {}.", status);
}
}
} catch (APIException e) {
throw e;
} catch (FatalSecurityException e) {
throw e;
} catch (Exception e) {
_log.info("Exception connecting to {}. ", endpoint, e);
}
}
throw SecurityException.retryables.requiredServiceUnvailable(ServiceLocatorInfo.AUTH_SVC.getServiceName());
}
use of com.emc.storageos.model.errorhandling.ServiceErrorRestRep in project coprhd-controller by CoprHD.
the class Validator method isValidPrincipal.
/**
* Validates the principal within the tenant
*
* @param principal
* @param tenantId
* : tenant id
* @param error
* : a string representing that error that happened.
* @return true if the principal is valid within the tenant
*/
public static boolean isValidPrincipal(StorageOSPrincipal principal, URI tenantId, StringBuilder error) {
String queryParams = null;
switch(principal.getType()) {
case User:
String encodedPrincipal;
String encodedTenant;
try {
encodedPrincipal = URLEncoder.encode(principal.getName(), "UTF-8");
} catch (UnsupportedEncodingException e) {
throw APIException.badRequests.unableToEncodeString(principal.getName(), e);
}
try {
encodedTenant = URLEncoder.encode(tenantId.toString(), "UTF-8");
} catch (UnsupportedEncodingException e) {
throw APIException.badRequests.unableToEncodeString(tenantId.toString(), e);
}
queryParams = "?subject_id=" + encodedPrincipal + "&tenant_id=" + encodedTenant;
break;
case Group:
try {
queryParams = "?group=" + URLEncoder.encode(principal.getName(), "UTF-8");
} catch (UnsupportedEncodingException e) {
throw APIException.badRequests.unableToEncodeString(principal.getName(), e);
}
break;
}
String endpoint = null;
int attempts = 0;
while (attempts < _MAX_VALIDATION_RETRIES) {
_log.debug("Validation attempt {}", ++attempts);
AuthSvcInternalApiClientIterator authSvcClientItr = new AuthSvcInternalApiClientIterator(_authSvcEndPointLocator, _coordinator);
try {
if (authSvcClientItr.hasNext()) {
endpoint = authSvcClientItr.peek().toString();
_log.info("isValidPrincipal(): {}", endpoint);
final ClientResponse response = authSvcClientItr.get(URI.create(_URI_VALIDATE + queryParams));
final int status = response.getStatus();
_log.debug("Status: {}", status);
if (status == ClientResponse.Status.OK.getStatusCode()) {
return true;
} else if (status == ClientResponse.Status.BAD_REQUEST.getStatusCode() || status == ClientResponse.Status.INTERNAL_SERVER_ERROR.getStatusCode()) {
ServiceErrorRestRep errorXml = response.getEntity(ServiceErrorRestRep.class);
error.append(errorXml.getDetailedMessage());
return false;
} else {
_log.info("Unexpected response code {}.", status);
}
}
} catch (Exception e) {
_log.info("Exception connecting to {}. ", endpoint, e);
}
}
return false;
}
Aggregations