public static Operation createDefaultPostOp( ServiceHost host) { LoaderServiceState d = new LoaderServiceState(); d.documentSelfLink = LoaderService.FILESYSTEM_DEFAULT_GROUP; d.loaderType = LoaderService.LoaderType.FILESYSTEM; d.path = LoaderService.FILESYSTEM_DEFAULT_PATH; d.servicePackages = new HashMap<String, LoaderService.LoaderServiceInfo>(); return Operation .createPost(UriUtils.buildUri(host, LoaderFactoryService.class)) .setBody(d); }
private void createCompositeComponent(String compositeId, Runnable callback) { CompositeComponent compositeComponent = new CompositeComponent(); compositeComponent.documentSelfLink = compositeId; compositeComponent.name = KUBERNETES_APPLICATION_TEMPLATE_PREFIX + ZonedDateTime .now(ZoneOffset.UTC).format(FORMATTER); sendRequest(Operation.createPost(this, CompositeComponentFactoryService.SELF_LINK) .setBody(compositeComponent) .setCompletion((o, ex) -> { if (ex != null) { logWarning("Error creating composite component " + "on kubernetes data collection: %s", Utils.toString(ex)); } callback.run(); })); }
public void registerForServiceAvailability(CompletionHandler completion, String nodeSelectorPath, boolean checkReplica, String... servicePaths) { if (servicePaths == null || servicePaths.length == 0) { throw new IllegalArgumentException("selfLinks are required"); } Operation op = Operation.createPost(null) .setCompletion(completion) .setExpiration(Utils.fromNowMicrosUtc(getOperationTimeoutMicros())); registerForServiceAvailability(op, checkReplica, nodeSelectorPath, servicePaths); }
private void callWebhook(String webHookUriStr, Closure closure) { logInfo("Calling execution container for closure: %s", closure.documentSelfLink); URI webHookUri = UriUtils.buildUri(webHookUriStr); sendRequest(Operation .createPost(webHookUri) .setExpiration(Utils.fromNowMicrosUtc(TimeUnit.SECONDS .toMicros(ClosureProps.DEFAULT_WEB_HOOK_EXPIRATION_TIMEOUT))) .setBody(closure) .setCompletion((op, ex) -> { if (ex != null) { logWarning("Unable to send closure state to: %s. Reason: %s", webHookUriStr, Utils.toString(ex)); } else { logInfo("Successfully sent closure state to: %s", webHookUri); } })); }
@Test public void testFactoryPostAndDelete() { UserState state = new UserState(); state.email = "jane@doe.com"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); UserState outState = this.sender.sendAndWait(op, UserState.class); assertEquals(state.email, outState.email); }
@Test public void testVerificationValidAuthServiceToken() throws Throwable { VerificationHost host = createAndStartHost(true, false, new TestAuthenticationService()); host.log("Testing verification of valid token for external auth"); TestRequestSender sender = new TestRequestSender(host); TestRequestSender.setAuthToken(TestAuthenticationService.ACCESS_TOKEN); // make a request to verification service Operation requestOp = Operation.createPost(host, TestAuthenticationService.SELF_LINK) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_VERIFY_TOKEN); Operation responseOp = sender.sendAndWait(requestOp); Claims claims = responseOp.getBody(Claims.class); assertNotNull(claims); assertNotNull(responseOp.getResponseHeader(RANDOM_CUSTOM_HEADER)); assertNotNull(responseOp.getCookies().get(RANDOM_COOKIE)); TestRequestSender.clearAuthToken(); host.log("Verification of valid token for external auth succeeded"); }
@Test public void failureOnReservedSuffixServiceStart() throws Throwable { TestContext ctx = this.testCreate(ServiceHost.RESERVED_SERVICE_URI_PATHS.length); for (String reservedSuffix : ServiceHost.RESERVED_SERVICE_URI_PATHS) { Operation post = Operation.createPost(this.host, UUID.randomUUID().toString() + "/" + reservedSuffix) .setCompletion(ctx.getExpectedFailureCompletion()); this.host.startService(post, new MinimalTestService()); } this.testWait(ctx); }
public static DeferredResult<ResourceGroupState> createResourceGroup(ServiceHost host, URI referer, String contextId, List<String> tenantLinks) { ResourceGroupState resourceGroup = new ResourceGroupState(); resourceGroup.name = contextId; resourceGroup.documentSelfLink = generateSelfLink(resourceGroup); resourceGroup.tenantLinks = tenantLinks; resourceGroup.customProperties = new HashMap<>(); resourceGroup.customProperties.put(ComputeProperties.RESOURCE_TYPE_KEY, COMPUTE_DEPLOYMENT_TYPE_VALUE); return host.sendWithDeferredResult( Operation.createPost(host, ResourceGroupService.FACTORY_LINK) .setReferer(referer) .setBody(resourceGroup)) .thenApply(op -> op.getBody(ResourceGroupState.class)); }
private void createRequestTracker(ClosureTaskState state) { sendRequest(Operation.createPost(this, ManagementUriParts.REQUEST_STATUS) .setBodyNoCloning(fromTask(state)) .setCompletion((o, e) -> { if (e != null) { logWarning("Failed to create request tracker for: " + state.documentSelfLink, e); return; } state.requestTrackerLink = o.getBody(TaskStatusState.class).documentSelfLink; logInfo("Created request tracker: %s", state.requestTrackerLink); updateRequestTracker(state, ClosureProps.RETRIES_COUNT); })); }
public Operation createServiceStartPost(TestContext ctx) { Operation post = Operation.createPost(null); post.setUri(UriUtils.buildUri(this, "service/" + post.getId())); return post.setCompletion(ctx.getCompletion()); }
static void checkAndUpdateDocumentOwnership(ServiceHost host, Service service, long expirationTimeMicrosUtc, CompletionHandler ch) { Operation selectOwnerOp = Operation.createPost(null) .setExpiration(expirationTimeMicrosUtc); CompletionHandler c = (o, e) -> { if (e != null) { ch.handle(selectOwnerOp, e); return; } SelectOwnerResponse rsp = o.getBody(SelectOwnerResponse.class); service.toggleOption(ServiceOption.DOCUMENT_OWNER, rsp.isLocalHostOwner); ch.handle(selectOwnerOp, null); }; selectOwnerOp.setCompletion(c); host.selectOwner(service.getPeerNodeSelectorPath(), service.getSelfLink(), selectOwnerOp); }
private void createEndpointExpectFailure(Endpoint e, Consumer<ServiceErrorResponse> consumer) { Operation o = Operation .createPost(host, PKSEndpointFactoryService.SELF_LINK) .setBodyNoCloning(e); TestRequestSender.FailureResponse failure = sender.sendAndWaitFailure(o); assertTrue(failure.failure instanceof LocalizableValidationException); ServiceErrorResponse errorResponse = failure.op.getBody(ServiceErrorResponse.class); assertNotNull(errorResponse); consumer.accept(errorResponse); }
private void createProject(ProjectContentBody projectContent, Runnable callback) { ProjectState state = new ProjectState(); state.name = projectContent.name; state.description = projectContent.description; state.isPublic = projectContent.isPublic; sendRequest(Operation.createPost(this, ProjectFactoryService.SELF_LINK) .setBody(state) .setReferer(getHost().getUri()) .setCompletion((o, ex) -> { if (ex != null) { logWarning("Failed to create project: %s", Utils.toString(ex)); callback.run(); } else { ProjectState created = o.getBody(ProjectState.class); updateProjectWithMembers(created, projectContent, callback); } })); }
@Test public void testFactoryPostAndDelete() { UserState state = new UserState(); state.email = "jane@doe.com"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); UserState outState = this.sender.sendAndWait(op, UserState.class); assertEquals(state.email, outState.email); }
@Test public void testVerificationValidAuthServiceToken() throws Throwable { VerificationHost host = createAndStartHost(true, false, new TestAuthenticationService()); host.log("Testing verification of valid token for external auth"); TestRequestSender sender = new TestRequestSender(host); TestRequestSender.setAuthToken(TestAuthenticationService.ACCESS_TOKEN); // make a request to verification service Operation requestOp = Operation.createPost(host, TestAuthenticationService.SELF_LINK) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_VERIFY_TOKEN); Operation responseOp = sender.sendAndWait(requestOp); Claims claims = responseOp.getBody(Claims.class); assertNotNull(claims); assertNotNull(responseOp.getResponseHeader(RANDOM_CUSTOM_HEADER)); assertNotNull(responseOp.getCookies().get(RANDOM_COOKIE)); TestRequestSender.clearAuthToken(); host.log("Verification of valid token for external auth succeeded"); }
@Test public void failureOnReservedSuffixServiceStart() throws Throwable { TestContext ctx = this.testCreate(ServiceHost.RESERVED_SERVICE_URI_PATHS.length); for (String reservedSuffix : ServiceHost.RESERVED_SERVICE_URI_PATHS) { Operation post = Operation.createPost(this.host, UUID.randomUUID().toString() + "/" + reservedSuffix) .setCompletion(ctx.getExpectedFailureCompletion()); this.host.startService(post, new MinimalTestService()); } this.testWait(ctx); }
private void postEventlogError(ComputeState hostState, String message) { EventLogState eventLog = new EventLogState(); eventLog.description = message == null ? "Unexpected error" : message; eventLog.eventLogType = EventLogType.ERROR; eventLog.resourceType = getClass().getName(); eventLog.tenantLinks = hostState.tenantLinks; sendRequest(Operation.createPost(this, EventLogService.FACTORY_LINK) .setBody(eventLog) .setCompletion((o, e) -> { if (e != null) { logWarning("Failed to create event log: %s", Utils.toString(e)); } })); }
private void idempotentPostReturnsUpdatedOpBody(TestRequestSender sender) throws Throwable { SomeDocument doc = new SomeDocument(); doc.documentSelfLink = "/subpath/fff/apple"; doc.value = 2; sender.sendAndWait(Operation.createPost(this.factoryUri).setBody(doc)); Operation o = sender.sendAndWait(Operation.createPost(this.factoryUri).setBody(doc)); SomeDocument doc2 = o.getBody(SomeDocument.class); assertNotNull(doc2); assertEquals(4, doc2.value); }
public static Operation createNodeGroupPostOp( ServiceHost host, String groupName) { ServiceDocument d = new ServiceDocument(); d.documentSelfLink = groupName; return Operation .createPost(UriUtils.buildUri(host, NodeGroupFactoryService.class)) .setBody(d); }
public Operation createServiceStartPost(TestContext ctx) { Operation post = Operation.createPost(null); post.setUri(UriUtils.buildUri(this, "service/" + post.getId())); return post.setCompletion(ctx.getCompletion()); }