/** * Get service state by serviceLink. * * @param path * @return * @throws Throwable */ private ImageReplicatorService.State getLatestState(String path) throws Throwable { Operation getOperation = Operation.createGet(UriUtils.buildUri(dcpHost, path)) .setReferer(UriUtils.buildUri(dcpHost, REFERRER_PATH)) .setExpiration(Utils.getNowMicrosUtc() + dcpOperationTimeoutMicros) .setContextId(LoggingUtils.getRequestId()); OperationLatch opLatch = new OperationLatch(getOperation); dcpHost.sendRequest(getOperation); return opLatch.await().getBody(ImageReplicatorService.State.class); }
/** * Trigger image replication. * * @param request * @return * @throws Throwable */ private String triggerReplication(ReplicateImageRequest request) throws Throwable { // Prepare replication service call. ImageReplicatorService.State postReq = new ImageReplicatorService.State(); postReq.image = request.getImage(); postReq.datastore = request.getDatastore(); // Create the operation and call for replication. Operation postOperation = Operation.createPost(UriUtils.buildUri(dcpHost, ImageReplicatorServiceFactory.class)) .setBody(postReq) .setReferer(UriUtils.buildUri(dcpHost, REFERRER_PATH)) .setExpiration(Utils.getNowMicrosUtc() + dcpOperationTimeoutMicros) .setContextId(LoggingUtils.getRequestId()); OperationLatch opLatch = new OperationLatch(postOperation); dcpHost.sendRequest(postOperation); Operation op = opLatch.await(); // Return operation id. return op.getBody(ImageReplicatorService.State.class).documentSelfLink; }