@Override public void handleGet(Operation op) { List<String> operationTypes = new ArrayList<>(); for (ContainerOperationType requestType : ContainerOperationType.values()) { operationTypes.add(requestType.id); } op.setBodyNoCloning(operationTypes); op.complete(); }
private static void returnLatestOrFail(QueryTask response, Operation get, FailRequest fr) { if (response.results.documentLinks.isEmpty()) { get.setStatusCode(Operation.STATUS_CODE_NOT_FOUND); fr.failRequest(get, new IllegalStateException("Latest state not found"), false); return; } String latest = response.results.documentLinks.get(0); Object obj = response.results.documents.get(latest); get.setBodyNoCloning(obj).complete(); }
private Function<? super List<Object>, Object> packAndReturnResults(Operation get, ServiceDocumentQueryResult result) { return a -> { result.documentOwner = this.getHost().getId(); result.documentCount = (long) result.documents.size(); result.documentLinks = new ArrayList<>(result.documents.keySet()); Collections.sort(result.documentLinks); get.setBodyNoCloning(result); get.complete(); return null; }; }
private Collection<Operation> createPostOperations(State currentState, Map<URI, Operation> failedOps, Map<Operation, Object> posts) { return failedOps.values().stream() .map(o -> { Object newBody = posts.get(o); return createPost(o.getUri(), currentState) .setBodyNoCloning(newBody) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_FROM_MIGRATION_TASK) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_FORCE_INDEX_UPDATE); }) .collect(Collectors.toList()); }
private void clearEnforcedClusterStatus(String resourcePoolLink) { Map<String, Collection<Object>> keysToRemove = new HashMap<>(); keysToRemove.put(ResourcePoolState.FIELD_NAME_CUSTOM_PROPERTIES, Collections.singleton(ENFORCED_CLUSTER_STATUS_PROP)); ServiceStateMapUpdateRequest x = ServiceStateMapUpdateRequest.create(null, keysToRemove); Operation.createPatch(this, resourcePoolLink) .setBodyNoCloning(x) .sendWith(this); }
protected static void handlePatchPostPut(Service service, Operation op) { AuthCredentialsServiceState body = op.getBody(AuthCredentialsServiceState.class); // Credentials with SYSTEM scope need the password in plain text or they can't be used to // login into Xenon! boolean isSystemScope = (body.customProperties != null) && CredentialsScope.SYSTEM.toString().equals( body.customProperties.get(CUSTOM_PROP_CREDENTIALS_SCOPE)); if (!isSystemScope) { body.privateKey = EncryptionUtils.encrypt(body.privateKey); op.setBodyNoCloning(body); } }
private void failRequest(Operation op, Throwable e, boolean shouldRetry) { if (shouldRetry) { // Request client side retries on state or consensus conflict ServiceErrorResponse rsp = ServiceErrorResponse.create(e, op.getStatusCode(), EnumSet.of(ErrorDetail.SHOULD_RETRY)); op.setBodyNoCloning(rsp); } processPending(op); op.fail(e); }
protected void handleOptionsCompletion(Operation options) { if (!options.hasBody()) { options.setBodyNoCloning(getDocumentTemplate()); } processCompletionStagePublishAndComplete(options); }
private void cancelContinuousQueryOnIndex(QueryTask task) { QueryTask body = new QueryTask(); body.documentSelfLink = task.documentSelfLink; body.taskInfo.stage = TaskStage.CANCELLED; body.querySpec = task.querySpec; body.documentKind = task.documentKind; Operation cancelActiveQueryPatch = Operation .createPatch(this, task.indexLink) .setBodyNoCloning(body); sendRequest(cancelActiveQueryPatch); }
protected void handleOptionsCompletion(Operation options) { if (!options.hasBody()) { options.setBodyNoCloning(getDocumentTemplate()); } options.complete(); }
private void handleEventStreamError(Operation op, ServerSentEvent event) { String errorMsg = String.format("Service %s returned error for %s. id %d", op.getUri(), op.getAction(), op.getId()); ServiceErrorResponse rsp = Utils.fromJson(event.data, ServiceErrorResponse.class); errorMsg += " message " + rsp.message; op.setBodyNoCloning(rsp); op.fail(new ProtocolException(errorMsg)); }
@Override public void handlePost(Operation post) { ComputeSquare instructions = post.getBody(ComputeSquare.class); instructions.result = instructions.a * instructions.a + instructions.b * instructions.b; post.setBodyNoCloning(instructions); post.complete(); }
private void updateVolumePowerState(ContainerVolumeState volumeState) { ContainerVolumeState patchState = new ContainerVolumeState(); patchState.powerState = PowerState.CONNECTED; sendRequest(Operation.createPatch(this, volumeState.documentSelfLink) .setBodyNoCloning(patchState) .setCompletion((o, e) -> { if (e != null) { logWarning("Could not update volume %s to state %s", volumeState.documentSelfLink, PowerState.CONNECTED); } })); }
private DeferredResult<Void> pksListClusters(RequestContext ctx) { return getPKSContext(ctx.endpoint) .thenCompose(pksContext -> getClient().getClusters(pksContext)) .thenAccept(pksClusters -> ctx.operation.setBodyNoCloning(pksClusters).complete()); }
private Endpoint createEndpoint() { Endpoint endpoint = new Endpoint(); endpoint.apiEndpoint = "http://localhost"; endpoint.uaaEndpoint = "https://localhost"; Operation o = Operation .createPost(host, PKSEndpointFactoryService.SELF_LINK) .setBodyNoCloning(endpoint); Endpoint result = sender.sendAndWait(o, Endpoint.class); return result; }
private DeferredResult<Void> pksCreateCluster(RequestContext ctx) { PKSCluster cluster = PKSClusterMapper.fromMap(ctx.request.customProperties); return getPKSContext(ctx.endpoint) .thenCompose(pksContext -> getClient().createCluster(pksContext, cluster)) .thenAccept(pksCluster -> ctx.operation.setBodyNoCloning(pksCluster).complete()); }
private void listHostNetworks(NetworkListCallback body, Operation.CompletionHandler c) { AdapterRequest request = new AdapterRequest(); request.operationTypeId = ContainerHostOperationType.LIST_NETWORKS.id; request.serviceTaskCallback = ServiceTaskCallback.createEmpty(); request.resourceReference = UriUtils.buildUri(getHost(), body.containerHostLink); sendRequest(Operation .createPatch(body.hostAdapterReference) .setBodyNoCloning(request) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_QUEUE_FOR_SERVICE_AVAILABILITY) .setCompletion(c)); }
private void listHostContainers(ContainerListCallback body, Operation.CompletionHandler c) { String containerHostLink = body.containerHostLink; AdapterRequest request = new AdapterRequest(); request.operationTypeId = ContainerHostOperationType.LIST_CONTAINERS.id; request.serviceTaskCallback = ServiceTaskCallback.createEmpty(); request.resourceReference = UriUtils.buildUri(getHost(), containerHostLink); sendRequest(Operation .createPatch(body.hostAdapterReference) .setBodyNoCloning(request) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_QUEUE_FOR_SERVICE_AVAILABILITY) .setCompletion(c)); }
private void createHarborConfigurationState(String value) { ConfigurationState state = new ConfigurationState(); state.documentSelfLink = UriUtils.buildUriPath(ConfigurationFactoryService.SELF_LINK, Harbor.CONFIGURATION_URL_PROPERTY_NAME); state.key = Harbor.CONFIGURATION_URL_PROPERTY_NAME; state.value = value; sender.sendAndWait(Operation .createPost(UriUtils.buildUri(host, ConfigurationFactoryService.SELF_LINK)) .setBodyNoCloning(state), ConfigurationState.class); }
@Test public void testAddPKSClusterFail() { String endpointLink = createEndpoint().documentSelfLink; AddClusterRequest request = new AddClusterRequest(); request.endpointLink = endpointLink; Operation o = Operation .createPost(host, PKSClusterConfigService.SELF_LINK) .setBodyNoCloning(request); FailureResponse failureResponse = sender.sendAndWaitFailure(o); assertNotNull(failureResponse); assertNotNull(failureResponse.failure); }