public static Operation create(SerializedOperation ctx, ServiceHost host) { Operation op = new Operation(); op.action = ctx.action; op.body = ctx.jsonBody; op.expirationMicrosUtc = ctx.documentExpirationTimeMicros; op.setContextId(ctx.id.toString()); op.referer = ctx.referer; op.uri = UriUtils.buildUri(host, ctx.path, ctx.query, ctx.userInfo); op.transactionId = ctx.transactionId; return op; }
private void sendToKubernetesScheduler(CompositeComponentRemovalTaskState state, ResourceTypeRemovalNode removalNode, ServiceTaskCallback taskCallback, final CompletionHandler completionHandler) { if (removalNode.resourceLinks.size() == 0) { throw new IllegalStateException( "Kubernetes composite component with 0 resource links."); } CompositeKubernetesRemovalTaskState task = new CompositeKubernetesRemovalTaskState(); task.documentSelfLink = getSelfId(); task.serviceTaskCallback = taskCallback; task.customProperties = state.customProperties; task.resourceLinks = removalNode.resourceLinks; task.tenantLinks = state.tenantLinks; task.requestTrackerLink = state.requestTrackerLink; sendRequest(Operation .createPost(this, CompositeKubernetesRemovalTaskService.FACTORY_LINK) .setBody(task) .setContextId(getSelfId()) .setCompletion(completionHandler)); }
private void patchCompositionSubTaskToExecute( String subTaskSelfLink, CompletionHandler completionHandler) { final CompositionSubTaskState compositionSubTask = new CompositionSubTaskState(); compositionSubTask.documentSelfLink = subTaskSelfLink; compositionSubTask.taskInfo = new TaskState(); compositionSubTask.taskInfo.stage = TaskStage.STARTED; compositionSubTask.taskSubStage = CompositionSubTaskState.SubStage.EXECUTE; sendRequest(Operation.createPatch(this, subTaskSelfLink) .setBody(compositionSubTask) .setContextId(compositionSubTask.requestId) .setCompletion(completionHandler)); }
private void sendContainerVolumeDeleteRequest(ContainerVolumeRemovalTaskState state, ContainerVolumeState volumeState, String subTaskLink) { AdapterRequest adapterRequest = new AdapterRequest(); String selfLink = volumeState.documentSelfLink; adapterRequest.resourceReference = UriUtils.buildUri(getHost(), selfLink); adapterRequest.serviceTaskCallback = ServiceTaskCallback.create(UriUtils.buildUri( getHost(), subTaskLink).toString()); adapterRequest.operationTypeId = (Boolean.TRUE.equals(volumeState.external) && state.externalInspectOnly) ? VolumeOperationType.INSPECT.id : VolumeOperationType.DELETE.id; sendRequest(Operation.createPatch(getHost(), volumeState.adapterManagementReference.toString()) .setBody(adapterRequest) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("AdapterRequest failed for container volume: " + selfLink, e); return; } })); }
private void sendContainerNetworkDeleteRequest(ContainerNetworkRemovalTaskState state, ContainerNetworkState networkState, String subTaskLink) { AdapterRequest adapterRequest = new AdapterRequest(); String selfLink = networkState.documentSelfLink; adapterRequest.resourceReference = UriUtils.buildUri(getHost(), selfLink); adapterRequest.serviceTaskCallback = ServiceTaskCallback.create(UriUtils.buildUri( getHost(), subTaskLink).toString()); adapterRequest.operationTypeId = (Boolean.TRUE.equals(networkState.external) && state.externalInspectOnly) ? NetworkOperationType.INSPECT.id : NetworkOperationType.DELETE.id; sendRequest(Operation.createPatch(getHost(), networkState.adapterManagementReference.toString()) .setBody(adapterRequest) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("AdapterRequest failed for container network: " + selfLink, e); return; } })); }
private void sendCreateClusterRequest(PKSProvisioningTaskState task, Consumer<PKSCluster> consumer) { AdapterRequest adapterRequest = createAdapterRequest(task, PKSOperationType.CREATE_CLUSTER); Operation.createPatch(getHost(), ManagementUriParts.ADAPTER_PKS) .setBodyNoCloning(adapterRequest) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("PKS AdapterRequest failed, endpoint: " + task.endpointLink, e); return; } logInfo("PKS cluster provisioning started on %s", task.endpointLink); consumer.accept(o.getBody(PKSCluster.class)); }) .sendWith(this); }
private void sendApplicationRemovalRequest(final CompositeKubernetesRemovalTaskState state, String compositeComponentLink, ServiceTaskCallback taskCallback, final CompletionHandler completionHandler) { ApplicationRequest request = new ApplicationRequest(); request.resourceReference = UriUtils.buildUri(getHost(), compositeComponentLink); request.customProperties = state.customProperties; request.serviceTaskCallback = taskCallback; request.operationTypeId = ApplicationOperationType.DELETE.id; sendRequest(Operation .createPatch(this, ManagementUriParts.ADAPTER_KUBERNETES_APPLICATION) .setBody(request) .setContextId(getSelfId()) .setCompletion(completionHandler) ); }
private Operation deleteClosure(String resourceLink) { return Operation .createDelete(this, resourceLink) .setContextId(getSelfId()) .setBody(new ServiceDocument()) .setCompletion( (op, ex) -> { if (ex != null) { logWarning("Failed deleting closure state: %s. Error: %s", resourceLink, Utils.toString(ex)); return; } logInfo("Deleted closure state: %s", resourceLink); }); }
private void createContainerInstanceRequests(ContainerAllocationTaskState state, ServiceTaskCallback taskCallback, String containerSelfLink) { AdapterRequest adapterRequest = new AdapterRequest(); adapterRequest.resourceReference = UriUtils.buildUri(getHost(), containerSelfLink); adapterRequest.serviceTaskCallback = taskCallback; adapterRequest.operationTypeId = ContainerOperationType.CREATE.id; adapterRequest.customProperties = state.customProperties; sendRequest(Operation.createPatch(getHost(), state.instanceAdapterReference.toString()) .setBody(adapterRequest) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("AdapterRequest failed for container: " + containerSelfLink, e); return; } logInfo("Container provisioning started for: %s", containerSelfLink); })); }
private void createAdapterRequest(ContainerOperationTaskState state, ContainerState containerState, ServiceTaskCallback taskCallback) { AdapterRequest adapterRequest = new AdapterRequest(); String selfLink = containerState.documentSelfLink; adapterRequest.resourceReference = UriUtils.buildUri(getHost(), selfLink); adapterRequest.serviceTaskCallback = taskCallback; adapterRequest.operationTypeId = state.operation; adapterRequest.customProperties = state.customProperties; sendRequest(Operation.createPatch(getHost(), containerState.adapterManagementReference.toString()) .setBody(adapterRequest) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("AdapterRequest failed for container: " + selfLink, e); return; } else { patchContainerStats(state, containerState); } })); }
@Test public void testSerializedOperation() throws Throwable { String link = ExampleService.FACTORY_LINK; String contextId = UUID.randomUUID().toString(); String transactionId = UUID.randomUUID().toString(); Operation op = Operation .createPost(UriUtils.buildUri(this.host, link, "someQuery", "someUserInfo")) .setBody("body") .setReferer(this.host.getReferer()) .setContextId(contextId) .setTransactionId(transactionId) .setStatusCode(Operation.STATUS_CODE_OK); SerializedOperation sop = SerializedOperation.create(op); verifyOp(op, sop); }
@Test public void testSerializedOperation() throws Throwable { String link = ExampleService.FACTORY_LINK; String contextId = UUID.randomUUID().toString(); String transactionId = UUID.randomUUID().toString(); Operation op = Operation .createPost(UriUtils.buildUri(this.host, link, "someQuery", "someUserInfo")) .setBody("body") .setReferer(this.host.getReferer()) .setContextId(contextId) .setTransactionId(transactionId) .setStatusCode(Operation.STATUS_CODE_OK); SerializedOperation sop = SerializedOperation.create(op); verifyOp(op, sop); }
private void processCreateImage(RequestContext context) { sendRequest(Operation.createGet(this, context.containerState.descriptionLink) .setContextId(context.request.getRequestId()) .setCompletion((o, ex) -> { if (ex != null) { fail(context.request, ex); } else { handleExceptions(context.request, context.operation, () -> { context.containerDescription = o.getBody(ContainerDescription.class); context.imageName = context.containerDescription.image; processAuthentication(context, () -> processContainerDescription(context)); }); } })); }
private void createClosureProvisionTask(RequestBrokerState state) { ClosureProvisionTaskState allocationTask = new ClosureProvisionTaskState(); allocationTask.documentSelfLink = getSelfId(); allocationTask.serviceTaskCallback = ServiceTaskCallback.create( state.documentSelfLink, TaskStage.STARTED, SubStage.COMPLETED, TaskStage.STARTED, SubStage.REQUEST_FAILED); allocationTask.customProperties = state.customProperties; allocationTask.resourceDescriptionLink = state.resourceDescriptionLink; allocationTask.resourceLinks = state.resourceLinks; allocationTask.tenantLinks = state.tenantLinks; allocationTask.requestTrackerLink = state.requestTrackerLink; sendRequest(Operation .createPost(this, ClosureProvisionTaskService.FACTORY_LINK) .setBodyNoCloning(allocationTask) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("Failure creating resource provisioning task", e); return; } })); }
private void distributeCertificate(RegistryState registry, Operation parentOp) { parentOp.complete(); logInfo("Distributing certificate for %s. Fetching registry certificate", registry.address); RegistryService.fetchRegistryCertificate(registry, (certificate) -> { RegistryConfigCertificateDistributionState distributionState = new RegistryConfigCertificateDistributionState(); distributionState.registryAddress = registry.address; distributionState.tenantLinks = registry.tenantLinks; distributionState.certState = new SslTrustCertificateState(); distributionState.certState.certificate = certificate; logInfo("Distributing certificate for %s. Fetched registry certificate.", registry.address); sendRequest(Operation.createPost(this, RegistryConfigCertificateDistributionService.SELF_LINK) .setContextId(parentOp.getContextId()) .setBody(distributionState)); }, getHost()); }
private void createContainerOperationTasks(RequestBrokerState state) { ContainerOperationTaskState operationState = new ContainerOperationTaskState(); operationState.resourceLinks = state.resourceLinks; operationState.serviceTaskCallback = ServiceTaskCallback.create(getSelfLink(), TaskStage.STARTED, SubStage.ALLOCATED, TaskStage.FAILED, SubStage.ERROR); operationState.operation = state.operation; operationState.documentSelfLink = getSelfId(); operationState.customProperties = state.customProperties; operationState.requestTrackerLink = state.requestTrackerLink; sendRequest(Operation.createPost(this, ContainerOperationTaskFactoryService.SELF_LINK) .setBodyNoCloning(operationState) .setContextId(getSelfId()) .setCompletion((o, ex) -> { if (ex != null) { failTask("Failed to create container operation task", ex); } proceedTo(SubStage.ALLOCATING); })); }
private void createAdapterRequest(PodState pod) { AdapterRequest request = new AdapterRequest(); request.resourceReference = UriUtils.buildPublicUri(getHost(), pod.documentSelfLink); request.operationTypeId = KubernetesOperationType.FETCH_LOGS.id; request.serviceTaskCallback = ServiceTaskCallback.createEmpty(); sendRequest(Operation.createPatch(getHost(), ManagementUriParts.ADAPTER_KUBERNETES) .setBody(request) .setContextId(Service.getId(getSelfLink())) .setCompletion((op, ex) -> { if (ex != null) { logWarning("Adapter request for container logs %s failed. Error: %s", pod.documentSelfLink, Utils.toString(ex)); } })); }
private void process(PKSClusterResizeTaskState task) { if (task.clusterName == null) { fetchPKSClusterName(task); return; } logInfo("Starting resize of pks cluster: %s endpoint: %s", task.resourceLink, task.endpointLink); AdapterRequest request = createAdapterRequest(task, PKSOperationType.RESIZE_CLUSTER); Operation.createPatch(getHost(), ManagementUriParts.ADAPTER_PKS) .setBodyNoCloning(request) .setContextId(getSelfId()) .setCompletion((o, e) -> { if (e != null) { failTask("PKS cluster resize failed, endpoint: " + task.endpointLink, e); return; } logInfo("PKS cluster resize started on %s", task.endpointLink); suspendHost(task.hostLink, () -> proceedTo(PROCESSING)); }) .sendWith(this); }
private void sendSelfPatch(State state, String contextId, CompletionHandler handler) { this.sendRequest(Operation .createPatch(getUri()) .forceRemote() .setBody(state) .setReferer(getUri()) .setContextId(contextId) .setCompletion(handler)); } }
private void sendSelfPatch(State state, String contextId, CompletionHandler handler) { this.sendRequest(Operation .createPatch(getUri()) .forceRemote() .setBody(state) .setReferer(getUri()) .setContextId(contextId) .setCompletion(handler)); } }