private SingularityLoadBalancerUpdate sendBaragonRequest(LoadBalancerRequestId loadBalancerRequestId, BaragonRequest loadBalancerRequest, LoadBalancerMethod method) { try { LOG.trace("Preparing to send request {}", loadBalancerRequest); final BoundRequestBuilder requestBuilder = httpClient.preparePost(loadBalancerUri) .addHeader(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON) .setBody(objectMapper.writeValueAsBytes(loadBalancerRequest)); if (loadBalancerQueryParams.isPresent()) { addAllQueryParams(requestBuilder, loadBalancerQueryParams.get()); } return sendRequestWrapper(loadBalancerRequestId, method, requestBuilder.build(), BaragonRequestState.FAILED); } catch (IOException e) { return new SingularityLoadBalancerUpdate(BaragonRequestState.UNKNOWN, loadBalancerRequestId, Optional.of(e.getMessage()), System.currentTimeMillis(), method, Optional.of(loadBalancerUri)); } }
Request httpRequest = requestBuilder.build();
public static void main(String[] args) { SecureRandom secureRandom = new SecureRandom(); SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, null, secureRandom); } catch (Exception e) { e.printStackTrace(); } AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder() .setConnectTimeout(5000) .setSSLContext(sslContext).build(); AsyncHttpClient client = new AsyncHttpClient(new GrizzlyAsyncHttpProvider(config), config); long start = System.currentTimeMillis(); try { client.executeRequest(client.prepareGet("http://www.google.com").build()).get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } LOGGER.debug("COMPLETE: " + (System.currentTimeMillis() - start) + "ms"); } }
@Override public SingularityLoadBalancerUpdate getState(LoadBalancerRequestId loadBalancerRequestId) { final String uri = getLoadBalancerUri(loadBalancerRequestId); final BoundRequestBuilder requestBuilder = httpClient.prepareGet(uri); if (loadBalancerQueryParams.isPresent()) { addAllQueryParams(requestBuilder, loadBalancerQueryParams.get()); } return sendRequestWrapper(loadBalancerRequestId, LoadBalancerMethod.CHECK_STATE, requestBuilder.build(), BaragonRequestState.UNKNOWN); }
@Override protected DownloadResponse getDownloadResponse(File file) throws Exception { AsyncHttpClient.BoundRequestBuilder requestBuilder = buildDownloadRequest(); if (packId != null) { requestBuilder.addQueryParam(KEY_PATH, packId.getInstallationPath() + ".zip"); } for (Map.Entry<String, String> param : this.stringParams.entrySet()) { requestBuilder.addQueryParam(param.getKey(), param.getValue()); } return executeDownloadRequest(requestBuilder.build(), file); } }
@Override protected ListResponse getListResponse() throws Exception { AsyncHttpClient.BoundRequestBuilder requestBuilder = buildListRequest(); if (packId != null) { requestBuilder.addQueryParam(KEY_PATH, packId.getInstallationPath() + ".zip"); } for (Map.Entry<String, String> param : this.stringParams.entrySet()) { requestBuilder.addQueryParam(param.getKey(), param.getValue()); } return executeListRequest(requestBuilder.build()); }
@Override public STATE onHeadersReceived(HttpResponseHeaders headers) { LOG.trace("Proxying download of {} from Mesos: Headers={}", requestBuilder.build().getUrl(), headers.getHeaders()); return STATE.CONTINUE; }
@Override public STATE onStatusReceived(HttpResponseStatus responseStatus) { LOG.trace("Proxying download of {} from Mesos: Status={}", requestBuilder.build().getUrl(), responseStatus.getStatusCode()); return STATE.CONTINUE; }
@Override public Void onCompleted() { LOG.info("Proxying download of {} from Mesos: Completed.", requestBuilder.build().getUrl()); return null; }
@Override public SingularityLoadBalancerUpdate cancel(LoadBalancerRequestId loadBalancerRequestId) { final String uri = getLoadBalancerUri(loadBalancerRequestId); final BoundRequestBuilder requestBuilder = httpClient.prepareDelete(uri); if (loadBalancerQueryParams.isPresent()) { addAllQueryParams(requestBuilder, loadBalancerQueryParams.get()); } return sendRequestWrapper(loadBalancerRequestId, LoadBalancerMethod.CANCEL, requestBuilder.build(), BaragonRequestState.UNKNOWN); }
/** The query parameters of the request, for debugging purposes. */ public Multimap<String, String> getQueryParams() { FluentStringsMap params = httpRequestBuilder.build().getQueryParams(); Multimap<String, String> converted = HashMultimap.create(); for (Map.Entry<String, List<String>> param: params) { converted.putAll(param.getKey(), param.getValue()); } return converted; }
private void downloadFilesFromLocalDownloadService(List<? extends S3Artifact> s3Artifacts, SingularityExecutorTask task) throws InterruptedException { final List<FutureHolder> futures = Lists.newArrayListWithCapacity(s3Artifacts.size()); for (S3Artifact s3Artifact : s3Artifacts) { String destination = task.getArtifactPath(s3Artifact, task.getTaskDefinition().getTaskDirectoryPath()).toString(); ArtifactDownloadRequest artifactDownloadRequest = new ArtifactDownloadRequest(destination, s3Artifact, Optional.of(SingularityExecutorArtifactFetcher.this.executorConfiguration.getLocalDownloadServiceTimeoutMillis())); task.getLog().debug("Requesting {} from {}", artifactDownloadRequest, localDownloadUri); BoundRequestBuilder postRequestBldr = localDownloadHttpClient.preparePost(localDownloadUri); try { postRequestBldr.setBody(objectMapper.writeValueAsBytes(artifactDownloadRequest)); } catch (JsonProcessingException e) { throw Throwables.propagate(e); } try { ListenableFuture<Response> future = localDownloadHttpClient.executeRequest(postRequestBldr.build()); futures.add(new FutureHolder(future, System.currentTimeMillis(), s3Artifact)); } catch (IOException ioe) { throw Throwables.propagate(ioe); } } for (FutureHolder future : futures) { Response response = future.getReponse(); task.getLog().debug("Future for {} got status code {} after {}", future.s3Artifact.getName(), response.getStatusCode(), JavaUtils.duration(future.start)); if (response.getStatusCode() != 200) { throw new IllegalStateException("Got status code:" + response.getStatusCode()); } } }
public ListenableFuture<Response> execute() { return AsyncHttpClient.this.executeRequest(build(), new AsyncCompletionHandlerBase()); }
public <T> ListenableFuture<T> execute(AsyncHandler<T> handler) { return AsyncHttpClient.this.executeRequest(build(), handler); }
@Override public STATE onStatusReceived(HttpResponseStatus responseStatus) { LOG.trace("Proxying download of {} from Mesos: Status={}", requestBuilder.build().getUrl(), responseStatus.getStatusCode()); return STATE.CONTINUE; }
@Override public STATE onHeadersReceived(HttpResponseHeaders headers) { LOG.trace("Proxying download of {} from Mesos: Headers={}", requestBuilder.build().getUrl(), headers.getHeaders()); return STATE.CONTINUE; }
@Override public SingularityLoadBalancerUpdate getState(LoadBalancerRequestId loadBalancerRequestId) { final String uri = getLoadBalancerUri(loadBalancerRequestId); final BoundRequestBuilder requestBuilder = httpClient.prepareGet(uri); if (loadBalancerQueryParams.isPresent()) { addAllQueryParams(requestBuilder, loadBalancerQueryParams.get()); } return sendRequestWrapper(loadBalancerRequestId, LoadBalancerMethod.CHECK_STATE, requestBuilder.build(), BaragonRequestState.UNKNOWN); }
@Override public Void onCompleted() { LOG.info("Proxying download of {} from Mesos: Completed.", requestBuilder.build().getUrl()); return null; }
@Override public SingularityLoadBalancerUpdate cancel(LoadBalancerRequestId loadBalancerRequestId) { final String uri = getLoadBalancerUri(loadBalancerRequestId); final BoundRequestBuilder requestBuilder = httpClient.prepareDelete(uri); if (loadBalancerQueryParams.isPresent()) { addAllQueryParams(requestBuilder, loadBalancerQueryParams.get()); } return sendRequestWrapper(loadBalancerRequestId, LoadBalancerMethod.CANCEL, requestBuilder.build(), BaragonRequestState.UNKNOWN); }
public Request build() { return _delegate.build(); }