use of com.emc.storageos.svcs.errorhandling.resources.APIException in project coprhd-controller by CoprHD.
the class AbstractAuthenticationFilter method doFilter.
@Override
public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
final HttpServletResponse response = (HttpServletResponse) servletResponse;
final HttpServletRequest request = (HttpServletRequest) servletRequest;
AbstractRequestWrapper reqWrapper = null;
try {
reqWrapper = authenticate(servletRequest);
} catch (APIException e) {
_log.debug("unauthorized request: serviceUrl = " + request.getRequestURI(), e);
response.sendError(toHTTPStatus(e), toServiceErrorXml(e));
return;
} catch (final InternalException e) {
response.sendError(toHTTPStatus(e), toServiceErrorXml(e));
return;
}
if (reqWrapper != null) {
// we are done, forward it to resource service
forwardToService(servletRequest, servletResponse, reqWrapper);
} else {
// not mine, forward it on to the next filter
filterChain.doFilter(servletRequest, servletResponse);
}
}
use of com.emc.storageos.svcs.errorhandling.resources.APIException in project coprhd-controller by CoprHD.
the class AbstractRequestWrapperFilter method doFilter.
@Override
public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
final HttpServletResponse response = (HttpServletResponse) servletResponse;
final HttpServletRequest request = (HttpServletRequest) servletRequest;
try {
final AbstractRequestWrapper reqWrapper = authenticate(servletRequest);
filterChain.doFilter(reqWrapper, servletResponse);
} catch (APIException e) {
_log.debug("unauthorized request: serviceUrl = " + request.getRequestURI(), e);
response.sendError(toHTTPStatus(e), toServiceErrorXml(e));
return;
} catch (final InternalException e) {
response.sendError(toHTTPStatus(e), toServiceErrorXml(e));
return;
}
}
use of com.emc.storageos.svcs.errorhandling.resources.APIException in project coprhd-controller by CoprHD.
the class SendAlertEvent method run.
@Override
public void run() {
try {
super.callEMCHome();
dbClient.ready(SysEvent.class, sysEventId, operationId);
alertsLog.warn("Alert event initiated by " + _eventParameters.getContact() + " is sent successfully");
} catch (APIException api) {
dbClient.error(SysEvent.class, sysEventId, operationId, api);
alertsLog.error("Failed to send alert event initiated by " + _eventParameters.getContact() + ". " + api.getMessage());
} finally {
SysEvent sysEvent = permissionsHelper.getObjectById(sysEventId, SysEvent.class);
dbClient.removeObject(sysEvent);
}
}
use of com.emc.storageos.svcs.errorhandling.resources.APIException 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.svcs.errorhandling.resources.APIException in project coprhd-controller by CoprHD.
the class Validator method getUserTenants.
public static UserTenantList getUserTenants(String username, TenantOrg tenant) {
String endpoint = null;
int attempts = 0;
while (attempts < _MAX_VALIDATION_RETRIES) {
_log.debug("Get user tenants attempt {}", ++attempts);
AuthSvcInternalApiClientIterator authSvcClientItr = new AuthSvcInternalApiClientIterator(_authSvcEndPointLocator, _coordinator);
try {
if (authSvcClientItr.hasNext()) {
endpoint = authSvcClientItr.peek().toString();
//
String queryParameters = "?username=" + username;
if (tenant != null) {
queryParameters += "&tenantURI=" + tenant.getId();
if (tenant.getUserMappings() != null) {
String userMappingStr = MarshallUtil.convertTenantUserMappingToString(tenant);
String encodedUserMapping = URLEncoder.encode(userMappingStr);
queryParameters += "&usermappings=" + encodedUserMapping;
}
}
final ClientResponse response = authSvcClientItr.get(URI.create(_URI_USERTENANT + queryParameters));
final int status = response.getStatus();
_log.debug("Status: {}", status);
if (status == ClientResponse.Status.OK.getStatusCode()) {
return response.getEntity(UserTenantList.class);
} else if (status == ClientResponse.Status.BAD_REQUEST.getStatusCode()) {
throw APIException.badRequests.theParametersAreNotValid(response.hasEntity() ? response.getEntity(String.class) : "Bad request");
} else {
_log.info("Unexpected response code {}.", status);
}
}
} catch (APIException e) {
throw e;
} catch (Exception e) {
_log.info("Exception connecting to {}. ", endpoint, e);
}
}
throw SecurityException.retryables.requiredServiceUnvailable(ServiceLocatorInfo.AUTH_SVC.getServiceName());
}
Aggregations