public static Operation createForcedPost(Service sender, String targetPath) { return createForcedPost(UriUtils.buildUri(sender.getHost(), targetPath)); }
private void createDiscoveredEntity(AtomicInteger counter, BaseKubernetesState entity, Runnable callback) { logFine("Creating KubernetesState for discovered entity: %s", entity.id); String type = KubernetesUtil.getResourceType(entity.getType()).getName(); AtomicBoolean hasError = new AtomicBoolean(false); sendRequest(OperationUtil .createForcedPost(this, CompositeComponentRegistry.stateFactoryLinkByType(type)) .setBody(entity) .setCompletion( (o, ex) -> { if (ex != null) { logSevere("Failed to create KubernetesState for discovered entity" + " (id=%s): %s", entity.id, ex.getMessage()); if (hasError.compareAndSet(false, true)) { callback.run(); } } else { logInfo("Created KubernetesState for discovered entity: %s", entity.id); } if (counter.decrementAndGet() == 0) { callback.run(); } })); }
private void createDiscoveredContainerVolume(Consumer<Throwable> callback, AtomicInteger counter, ContainerVolumeState volumeState) { logFine("Creating ContainerVolumeState for discovered volume: %s", volumeState.name); sendRequest(OperationUtil .createForcedPost(this, ContainerVolumeService.FACTORY_LINK) .setBodyNoCloning(volumeState) .setCompletion( (o, ex) -> { if (ex != null) { logSevere("Failed to create ContainerVolumeState for discovered" + " volume (name=%s): %s", volumeState.name, ex.getMessage()); callback.accept(ex); return; } logInfo("Created ContainerVolumeState for discovered volume: %s", volumeState.name); ContainerVolumeState body = o.getBody(ContainerVolumeState.class); createDiscoveredContainerVolumeDescription(body); inspectVolumeWithRetry(body, VOLUME_INSPECT_RETRY_COUNT); if (counter.decrementAndGet() == 0) { callback.accept(null); } })); }
private void createDiscoveredContainerDescription(ContainerState containerState) { logFine("Creating ContainerDescription for discovered container: %s", containerState.id); ContainerDescription containerDesc = ContainerUtil .createContainerDescription(containerState); sendRequest(OperationUtil .createForcedPost(this, ContainerDescriptionService.FACTORY_LINK) .setBodyNoCloning(containerDesc) .setCompletion((o, ex) -> { if (ex != null) { logSevere("Failed to create ContainerDescription for discovered container" + " (id=%s): %s", containerState.id, ex.getMessage()); } else { logInfo("Created ContainerDescription for discovered container: %s", containerState.id); } })); }
private void createDiscoveredContainerNetworkDescription(ContainerNetworkState networkState) { logFine("Creating ContainerNetworkDescription for discovered network: %s", networkState.id); ContainerNetworkDescription networkDesc = NetworkUtils .createContainerNetworkDescription(networkState); sendRequest(OperationUtil .createForcedPost(this, ContainerNetworkDescriptionService.FACTORY_LINK) .setBodyNoCloning(networkDesc) .setCompletion((o, ex) -> { if (ex != null) { logSevere("Failed to create ContainerNetworkDescription for discovered" + " network (id=%s): %s", networkState.id, ex.getMessage()); } else { logInfo("Created ContainerNetworkDescription for discovered network: %s", networkState.id); } })); }
private void createDiscoveredContainerNetwork(Consumer<Throwable> callback, AtomicInteger counter, ContainerNetworkState networkState) { logFine("Creating ContainerNetworkState for discovered network: %s", networkState.id); sendRequest(OperationUtil .createForcedPost(this, ContainerNetworkService.FACTORY_LINK) .setBodyNoCloning(networkState) .setCompletion((o, ex) -> { if (ex != null) { logSevere("Failed to create ContainerNetworkState for discovered network" + " (id=%s): %s", networkState.id, ex.getMessage()); callback.accept(ex); return; } else { logInfo("Created ContainerNetworkState for discovered network: %s", networkState.id); } ContainerNetworkState body = o.getBody(ContainerNetworkState.class); createDiscoveredContainerNetworkDescription(body); ContainerNetworkMaintenance networkMaintenance = new ContainerNetworkMaintenance( getHost()); networkMaintenance.requestNetworkInspection(body); if (counter.decrementAndGet() == 0) { callback.accept(null); } })); }
private void createDiscoveredContainerVolumeDescription(ContainerVolumeState volumeState) { logFine("Creating ContainerVolumeDescription for discovered volume: %s", volumeState.name); ContainerVolumeDescription volumeDesc = VolumeUtil .createContainerVolumeDescription(volumeState); sendRequest(OperationUtil .createForcedPost(this, ContainerVolumeDescriptionService.FACTORY_LINK) .setBodyNoCloning(volumeDesc) .setCompletion( (o, ex) -> { if (ex != null) { logSevere( "Failed to create ContainerVolumeDescription for" + " discovered volume (name=%s): %s", volumeState.name, ex.getMessage()); } else { logInfo("Created ContainerVolumeDescription for discovered" + " volume: %s", volumeState.name); } })); }
private void createCompositeDescription(String tenantLink, boolean cloned) throws Throwable { CompositeDescription compositeDesc = new CompositeDescription(); compositeDesc.name = TEST_COMPOSITE_DESC_NAME; if (cloned) { compositeDesc.parentDescriptionLink = TEST_COMPOSITE_DESC_NAME; compositeDesc.documentSelfLink = TEST_COMPOSITE_DESC_NAME_CLONED; } if (tenantLink != null) { compositeDesc.tenantLinks = Collections.singletonList(tenantLink); } compositeDesc.descriptionLinks = Collections.singletonList(containerDescSelfLink); System.out.println(getFactoryUrl(CompositeDescriptionFactoryService.class).toString()); verifyOperation(OperationUtil.createForcedPost( getFactoryUrl(CompositeDescriptionFactoryService.class)) .setBody(compositeDesc), (o) -> { CompositeDescription cd = o.getBody(CompositeDescription.class); compositeDescSelfLink = cd.documentSelfLink; }); }
private void startAllocationTask(ContainerAllocationTaskState allocationTask) { URI uri = UriUtils.buildUri(getHost(), ContainerAllocationTaskFactoryService.SELF_LINK); sendRequest(OperationUtil.createForcedPost(uri) .setBody(allocationTask) .setCompletion((o, e) -> { if (e != null) { logSevere("Exception while submitting allocation closure: %s", Utils.toString(e)); return; } logInfo("Allocation closure submitted successfully"); })); }
getHost().sendRequest(OperationUtil.createForcedPost(uri) .setBody(provisioningRequest) .setReferer(getHost().getUri())
private void createClosureDescription(String tenantLink) throws Throwable { ClosureDescription closureDesc = new ClosureDescription(); closureDesc.documentSelfLink = TEST_CLOSURE_DESC_NAME; closureDesc.name = TEST_CLOSURE_DESC_NAME; closureDesc.runtime = DriverConstants.RUNTIME_NODEJS_4; closureDesc.source = "test"; closureDesc.tenantLinks = Collections.singletonList(tenantLink); verifyOperation(OperationUtil.createForcedPost( UriUtils.buildFactoryUri(host, ClosureDescriptionFactoryService.class)) .setBody(closureDesc) .addRequestHeader(OperationUtil.PROJECT_ADMIRAL_HEADER, tenantLink), (o) -> { ClosureDescription cd = o.getBody(ClosureDescription.class); closureDescSelfLink = cd.documentSelfLink; }); }
private void createHostPortProfile(ComputeState computeState, Operation operation) { HostPortProfileService.HostPortProfileState hostPortProfileState = new HostPortProfileService.HostPortProfileState(); hostPortProfileState.hostLink = computeState.documentSelfLink; // Make sure there is only one HostPortProfile per Host by generating profile id based on // host id hostPortProfileState.id = computeState.id; hostPortProfileState.documentSelfLink = HostPortProfileService.getHostPortProfileLink( computeState.documentSelfLink); // POST will be converted to PUT if profile with this id already exists sendRequest(OperationUtil .createForcedPost(this, HostPortProfileService.FACTORY_LINK) .setBody(hostPortProfileState) .setCompletion((o, ex) -> { if (ex != null) { operation.fail(ex); return; } HostPortProfileService.HostPortProfileState result = o.getBody( HostPortProfileService.HostPortProfileState.class); logInfo("Created HostPortProfile for host %s with port range %s-%s.", result.hostLink, result.startPort, result.endPort); completeOperationSuccess(operation); })); }
private void createContainerDescription(boolean cloned) throws Throwable { ContainerDescription containerDesc = new ContainerDescription(); containerDesc.documentSelfLink = TEST_CONTAINER_DESC_NAME; containerDesc.name = TEST_CONTAINER_DESC_NAME; containerDesc.image = TEST_IMAGE_NAME; if (cloned) { containerDesc.parentDescriptionLink = TEST_CONTAINER_DESC_NAME; } verifyOperation(OperationUtil.createForcedPost( UriUtils.buildFactoryUri(host, ContainerDescriptionService.class)) .setBody(containerDesc), (o) -> { ContainerDescription cd = o.getBody(ContainerDescription.class); containerDescSelfLink = cd.documentSelfLink; }); }
private void storeTrustCertificate(SslTrustCertificateState sslTrustState, Operation op) { sendRequest(OperationUtil .createForcedPost(this, SslTrustCertificateService.FACTORY_LINK) .setBody(sslTrustState) .setCompletion((o, e) -> { if (e != null) { logWarning("Error creating trust certificate state: %s. Error: %s", o.getUri(), Utils.toString(e)); op.setStatusCode(o.getStatusCode()); op.fail(e); return; } SslTrustCertificateState body = o.getBody(SslTrustCertificateState.class); String selfLink = body.documentSelfLink; if (!body.documentSelfLink .startsWith(SslTrustCertificateService.FACTORY_LINK)) { selfLink = SslTrustCertificateService.FACTORY_LINK + body.documentSelfLink; } op.addResponseHeader(Operation.LOCATION_HEADER, selfLink); op.setBody(null); op.setStatusCode(HttpURLConnection.HTTP_NO_CONTENT); op.complete(); })); }
private void createContainerDescription(AdmiralAdapterTaskState state, String configChecksum, String imageTag) { // Create container description ContainerDescription containerDesc = prepareContainerDescription(state.imageConfig, state .configuration, configChecksum, imageTag); URI uri = UriUtils.buildUri(getHost(), ContainerDescriptionService.FACTORY_LINK); logInfo("Creating execution container description: %s", uri); sendRequest(OperationUtil.createForcedPost(uri) .setBody(containerDesc) .setCompletion((o, e) -> { if (e != null) { logSevere("Exception while creating container description: %s", Utils.toString(e)); failTask("Exception while creating container description", e); return; } logInfo("Execution container description created successfully."); proceedWithContainerDescription(state, null); })); }
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 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 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); })); }
private GroupResourcePlacementState savePlacement(GroupResourcePlacementState placementState, boolean expectFailure) throws Throwable { GroupResourcePlacementState[] result = new GroupResourcePlacementState[] { null }; host.testStart(1); host.send(OperationUtil .createForcedPost( UriUtils.buildUri(host, GroupResourcePlacementService.FACTORY_LINK)) .setBody(placementState) .setCompletion(expectFailure ? host.getExpectedFailureCompletion() : (o, e) -> { if (e != null) { host.failIteration(e); return; } result[0] = o.getBody(GroupResourcePlacementState.class); host.completeIteration(); })); host.testWait(); if (result[0] != null) { placementState = result[0]; } return placementState; }