private SynchronizationTaskService.State createSynchronizationTaskState( Long membershipUpdateTimeMicros, String factoryLink, Class<? extends ServiceDocument> type) { SynchronizationTaskService.State task = new SynchronizationTaskService.State(); task.documentSelfLink = UriUtils.convertPathCharsFromLink(factoryLink); task.factorySelfLink = factoryLink; task.factoryStateKind = Utils.buildKind(type); task.membershipUpdateTimeMicros = membershipUpdateTimeMicros; task.nodeSelectorLink = ServiceUriPaths.DEFAULT_NODE_SELECTOR; task.queryResultLimit = 1000; task.taskInfo = TaskState.create(); task.taskInfo.isDirect = true; return task; }
private SynchronizationTaskService.State createSynchronizationTaskState( Long membershipUpdateTimeMicros, String factoryLink, Class<? extends ServiceDocument> type) { SynchronizationTaskService.State task = new SynchronizationTaskService.State(); task.documentSelfLink = UriUtils.convertPathCharsFromLink(factoryLink); task.factorySelfLink = factoryLink; task.factoryStateKind = Utils.buildKind(type); task.membershipUpdateTimeMicros = membershipUpdateTimeMicros; task.nodeSelectorLink = ServiceUriPaths.DEFAULT_NODE_SELECTOR; task.queryResultLimit = 1000; task.taskInfo = TaskState.create(); task.taskInfo.isDirect = true; return task; }
SynchronizationTaskService.State createSynchronizationTaskState( Long membershipUpdateTimeMicros) { SynchronizationTaskService.State task = new SynchronizationTaskService.State(); task.documentSelfLink = UriUtils.convertPathCharsFromLink(this.getSelfLink()); task.factorySelfLink = this.getSelfLink(); task.factoryStateKind = Utils.buildKind(this.getStateType()); task.membershipUpdateTimeMicros = membershipUpdateTimeMicros; task.nodeSelectorLink = this.nodeSelectorLink; task.queryResultLimit = this.selfQueryResultLimit; task.taskInfo = TaskState.create(); task.taskInfo.isDirect = true; task.synchAllVersions = XenonConfiguration.bool( SynchronizationTaskService.class, "SYNCH_ALL_VERSIONS", false ); return task; }
@Override public void handleStart(Operation startPost) { State initState = getBody(startPost); logInfo("Starting migration with initState: %s", initState); initState = initialize(initState); if (TaskState.isFinished(initState.taskInfo)) { startPost.complete(); return; } if (!verifyState(initState, startPost)) { return; } startPost.complete(); State patchState = new State(); if (initState.taskInfo == null) { patchState.taskInfo = TaskState.create(); } if (initState.continuousMigration) { setMaintenanceIntervalMicros(initState.maintenanceIntervalMicros); } if (initState.taskInfo.stage == TaskStage.CANCELLED) { logInfo("In stage %s, will restart on next maintenance interval", initState.taskInfo.stage); return; } Operation.createPatch(getUri()) .setBody(patchState) .sendWith(this); }
private void proceedWithBaseImageCreation(ContainerDescription containerDesc, AdmiralAdapterTaskState state, int retriesCount) { URI uri = UriUtils.buildUri(getHost(), DockerImageFactoryService.FACTORY_LINK); DockerImage buildImage = new DockerImage(); buildImage.name = createBaseImageDockerName(state.imageConfig); buildImage.computeStateLink = state.selectedComputeLink; buildImage.taskInfo = TaskState.create(); buildImage.documentSelfLink = createImageBuildRequestUri(buildImage.name, state.selectedComputeLink); logInfo("Creating docker image request: %s", uri); sendRequest(OperationUtil.createForcedPost(uri) .setBody(buildImage) .setCompletion((o, e) -> { if (e != null) { logSevere("Exception while submitting docker image request: %s", Utils.toString(e)); failTask("Unable to submit docker image request", e); return; } logInfo("Docker image request has been created successfully."); // 2. Proceed with image operation request handleBaseImage(containerDesc, state, buildImage, state.selectedComputeLink, () -> proceedWithBaseDockerImage(containerDesc, state, retriesCount)); })); }
private void seedWithBaseDockerImageCreation(ContainerDescription containerDesc, String computeStateLink, AdmiralAdapterTaskState state) { URI uri = UriUtils.buildUri(getHost(), DockerImageFactoryService.FACTORY_LINK); DockerImage buildImage = new DockerImage(); buildImage.name = createBaseImageDockerName(state.imageConfig); buildImage.computeStateLink = computeStateLink; buildImage.taskInfo = TaskState.create(); buildImage.documentSelfLink = createImageBuildRequestUri(buildImage.name, computeStateLink); logInfo("Creating docker build base image request: %s", uri); sendRequest(OperationUtil.createForcedPost(uri) .setBody(buildImage) .setCompletion((o, e) -> { if (e != null) { logSevere("Exception while submitting docker build image request: %s", Utils.toString(e)); failTask("Unable to submit docker build image request", e); return; } logInfo("Docker build image request has been created successfully."); // 2. Proceed with image operation request handleBaseImage(containerDesc, state, buildImage, computeStateLink, () -> seedWithBaseDockerImage(containerDesc, computeStateLink, state)); })); }
private void seedWithDockerImageCreation(ContainerDescription containerDesc, String computeStateLink, AdmiralAdapterTaskState state) { URI uri = UriUtils.buildUri(getHost(), DockerImageFactoryService.FACTORY_LINK); DockerImage buildImage = new DockerImage(); buildImage.name = containerDesc.image; buildImage.computeStateLink = computeStateLink; buildImage.taskInfo = TaskState.create(); buildImage.documentSelfLink = createImageBuildRequestUri(containerDesc.image, computeStateLink); logInfo("Creating docker build image request: %s", uri); sendRequest(OperationUtil.createForcedPost(uri) .setBody(buildImage) .setCompletion((o, e) -> { if (e != null) { logSevere("Exception while submitting docker build image request: %s", Utils.toString(e)); failTask("Unable to submit docker build image request", e); return; } logInfo("Docker build image request has been created successfully."); // 2. Send image build request buildDockerImage(containerDesc, computeStateLink, state); // 3. Poll for completion getHost().schedule( () -> seedWithDockerImage(containerDesc, computeStateLink, state), 3, TimeUnit.SECONDS); })); }
private void proceedWithDockerImageCreation(ContainerDescription containerDesc, AdmiralAdapterTaskState state, int retriesCount) { URI uri = UriUtils.buildUri(getHost(), DockerImageFactoryService.FACTORY_LINK); DockerImage buildImage = new DockerImage(); buildImage.name = containerDesc.image; buildImage.computeStateLink = state.selectedComputeLink; buildImage.taskInfo = TaskState.create(); buildImage.documentSelfLink = createImageBuildRequestUri(containerDesc.image, state.selectedComputeLink); logInfo("Creating docker build image request: %s, retries: %s", uri, retriesCount); sendRequest(OperationUtil.createForcedPost(uri) .setBody(buildImage) .setCompletion((o, e) -> { if (e != null) { logSevere("Exception while submitting docker build image request: %s", Utils.toString(e)); failTask("Unable to submit docker build image request", e); return; } logInfo("Docker build image request has been created successfully."); // 2. Send image build request buildDockerImage(containerDesc, state.selectedComputeLink, state); // 3. Poll for completion getHost().schedule( () -> proceedWithDockerImage(containerDesc, state, retriesCount), 3, TimeUnit.SECONDS); })); }
@Test public void testStartWithoutTaskInfo() throws Throwable { TestTaskService testService = new TestTaskService(); testService.setHost(host); TestTaskServiceDocument serviceState = new TestTaskServiceDocument(); Operation startPost = Operation.createPost(host, TestTaskService.FACTORY_LINK) .setBody(serviceState); testService.handleStart(startPost); assertTrue(startPost.getErrorResponseBody() != null); serviceState.taskInfo = TaskState.create(); testService.setState(startPost, serviceState); startPost.setBody(serviceState); testService.handleStart(startPost); assertTrue(startPost.getErrorResponseBody() != null); }
private void startSynchronizationTaskAndWait(VerificationHost owner, String factoryLink, Class<?> stateType, long membershipUpdateTimeMicros) { SynchronizationTaskService.State task = new SynchronizationTaskService.State(); task.documentSelfLink = UriUtils.convertPathCharsFromLink(factoryLink); task.factorySelfLink = factoryLink; task.factoryStateKind = Utils.buildKind(stateType); task.membershipUpdateTimeMicros = membershipUpdateTimeMicros; task.nodeSelectorLink = ServiceUriPaths.DEFAULT_NODE_SELECTOR; task.queryResultLimit = 1000; task.taskInfo = TaskState.create(); task.taskInfo.isDirect = true; TestContext synchCtx = this.host.testCreate(1); Operation synchPost = Operation .createPost(owner, SynchronizationTaskService.FACTORY_LINK) .setBody(task) .setReferer(this.host.getUri()) .setCompletion(synchCtx.getCompletion()); // create the synchronization task placeholder this.host.sendRequest(synchPost); synchCtx.await(); // kick-off synchronization state machine synchCtx = this.host.testCreate(1); synchPost.setCompletion(synchCtx.getCompletion()); }
private void startSynchronizationTaskAndWait(VerificationHost owner, String factoryLink, Class<?> stateType, long membershipUpdateTimeMicros) { SynchronizationTaskService.State task = new SynchronizationTaskService.State(); task.documentSelfLink = UriUtils.convertPathCharsFromLink(factoryLink); task.factorySelfLink = factoryLink; task.factoryStateKind = Utils.buildKind(stateType); task.membershipUpdateTimeMicros = membershipUpdateTimeMicros; task.nodeSelectorLink = ServiceUriPaths.DEFAULT_NODE_SELECTOR; task.queryResultLimit = 1000; task.taskInfo = TaskState.create(); task.taskInfo.isDirect = true; TestContext synchCtx = this.host.testCreate(1); Operation synchPost = Operation .createPost(owner, SynchronizationTaskService.FACTORY_LINK) .setBody(task) .setReferer(this.host.getUri()) .setCompletion(synchCtx.getCompletion()); // create the synchronization task placeholder this.host.sendRequest(synchPost); synchCtx.await(); // kick-off synchronization state machine synchCtx = this.host.testCreate(1); synchPost.setCompletion(synchCtx.getCompletion()); }