@Override public void sendRequest(Operation op) { prepareRequest(op); this.host.sendRequest(op); }
@Override public void sendRequest(Operation op) { if (this.enablePostgres && PostgresHostUtils.handleSendRequest(this, op, this::findService)) { return; } super.sendRequest(op); }
@Override public void sendRequest(Operation op) { prepareRequest(op); this.context.host.sendRequest(op); }
/** * Send {@link Operation} using randomly chosen {@link ServiceHost} */ public void sendRequest(Operation op) { getHost().sendRequest(op); }
/** * Send {@link Operation} using randomly chosen {@link ServiceHost} */ public void sendRequest(Operation op) { getHost().sendRequest(op); }
private static void fetchVmdkDatastoreForHost(ServiceHost serviceHost, String hostLink, BiConsumer<String, Throwable> consumer) { Operation getHostOp = Operation.createGet(serviceHost, hostLink) .setReferer(serviceHost.getUri()) .setCompletion((o, e) -> { if (e != null) { consumer.accept(null, e); return; } ComputeState host = o.getBody(ComputeState.class); String datastore = null; if (host.customProperties != null) { datastore = host.customProperties.get(DEFAULT_VMDK_DATASTORE_PROP_NAME); } consumer.accept(datastore, null); }); serviceHost.sendRequest(getHostOp); }
private static void processQueuedBackUps(ServiceHost host, Operation notifyOp, AtomicBoolean autoBackupInProgress, AtomicReference<CommitInfo> receivedWhileBackupInProgress, Logger logger) { // When it had received notification while processing auto-backup, re-trigger the // notification event in order to make sure the last commit gets backed up CommitInfo commitInfo = receivedWhileBackupInProgress.getAndSet(null); if (commitInfo != null) { logger.info(() -> String.format( "Re-trigger auto backup for sequenceNumber=%s", commitInfo.sequenceNumber)); Operation notification = Operation .createPatch(notifyOp.getUri()) .addPragmaDirective( Operation.PRAGMA_DIRECTIVE_NOTIFICATION) .setBody(commitInfo) .setReferer(notifyOp.getReferer()); host.sendRequest(notification); } }
private static void registerEventTopic(ServiceHost host, EventTopicState topic) { host.sendRequest(Operation.createPost(host, EventTopicService.FACTORY_LINK) .setReferer(host.getUri()) .setBody(topic) .addPragmaDirective( Operation.PRAGMA_DIRECTIVE_QUEUE_FOR_SERVICE_AVAILABILITY) .setCompletion((o, e) -> { if (e != null) { host.log(Level.SEVERE, String.format( "Unable to register '%s' topic. " + "Exception: %s", topic.name, e.getMessage())); } })); }
private void deleteServiceSubscriptions(WebSocketService service) { Set<String> subscriptions = this.serviceSubscriptions.remove(service.getUri()); ServiceSubscriptionState.ServiceSubscriber body = new ServiceSubscriptionState.ServiceSubscriber(); body.reference = service.getUri(); for (String unsubscribeFrom : subscriptions) { this.host.sendRequest(Operation .createDelete(service, unsubscribeFrom) .setBody(body).setReferer(service.getUri())); } }
private void publishEventLog(ContainerStats patchHealth) { EventLogState eventLog = new EventLogState(); eventLog.description = String.format("Health check failed for container %s after %d tries," + " container state will be set to ERROR.", containerState.documentSelfLink, patchHealth.healthFailureCount); eventLog.eventLogType = EventLogType.ERROR; eventLog.resourceType = getClass().getName(); eventLog.tenantLinks = containerState.tenantLinks; host.log(Level.WARNING, eventLog.description); host.sendRequest(Operation.createPost(host, EventLogService.FACTORY_LINK) .setBodyNoCloning(eventLog) .setReferer(ContainerFactoryService.SELF_LINK) .setCompletion((o, e) -> { if (e != null) { host.log(Level.WARNING, "Failed to create event log: %s", Utils.toString(e)); } })); }
private void getContainerHost(ServiceHost serviceHost, String containerHostLink, Consumer<ComputeState> callback) { serviceHost.sendRequest(Operation .createGet(UriUtils.buildUri(serviceHost, containerHostLink)) .setReferer(UriUtils.buildUri(serviceHost, SERVICE_REFERRER_PATH)) .setCompletion( (ob, ex) -> { if (ex != null) { serviceHost.log(Level.SEVERE, "Unable to retrieve container's host during health " + "check: %s", Utils.toJson(ex)); callback.accept(null); } else { callback.accept(ob.getBody(ComputeState.class)); } })); }
public void requestNetworkInspection(ContainerNetworkState networkState) { AdapterRequest request = new AdapterRequest(); request.resourceReference = UriUtils.buildPublicUri(host, networkState.documentSelfLink); request.operationTypeId = NetworkOperationType.INSPECT.id; request.serviceTaskCallback = ServiceTaskCallback.createEmpty(); host.sendRequest(Operation .createPatch(host, networkState.adapterManagementReference.toString()) .setBodyNoCloning(request) .setReferer(UriUtils.buildUri(host, SERVICE_REFERRER_PATH)) .setCompletion((o, ex) -> { if (ex != null) { Utils.log(getClass(), SERVICE_REFERRER_PATH, Level.WARNING, "Exception while inspect request for network: %s. Error: %s", networkState.documentSelfLink, Utils.toString(ex)); } })); }
private void sendJoinPeerRequest(JoinPeerRequest joinBody, URI localNodeGroupUri) { Operation peerRequestOp = Operation .createPost(localNodeGroupUri) .setReferer(UriUtils.buildUri(this, "")) .setBody(joinBody) .setCompletion((o, e) -> { if (e == null) { return; } if (e != null) { log(Level.WARNING, "Failure from local node group for join to: %s: %s", joinBody.memberGroupReference, e.toString()); } }); peerRequestOp.setAuthorizationContext(getSystemAuthorizationContext()); sendRequest(peerRequestOp); }
private void stopServiceAndClearFromCache(Service s, ServiceDocument state) { // Issue DELETE to stop the service and clear it from cache Operation deleteExp = Operation.createDelete(this.host, s.getSelfLink()) .setBody(state) .disableFailureLogging(true) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_NO_INDEX_UPDATE) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_NO_FORWARDING) .setReferer(this.host.getUri()); this.host.sendRequest(deleteExp); }
void doHealthCheck(ServiceHost host, String containerDescriptionLink) { host.sendRequest(Operation .createGet(host, containerDescriptionLink) .setReferer(UriUtils.buildUri(host, SERVICE_REFERRER_PATH)) .setCompletion((o, ex) -> { if (ex != null) { host.log(Level.SEVERE, "Failed to fetch %s : %s", containerDescriptionLink, Utils.toJson(ex)); } else { processContainerHealth(host, o.getBody(ContainerDescription.class)); } })); }
private static void registerServiceForHelathcheck(ServiceHost host, Set<String> services) { NodeHealthCheckService nodeHealthCheck = new NodeHealthCheckService(); // Add migration task service explicitly because it is started from xenon services.add(MigrationTaskService.FACTORY_LINK); nodeHealthCheck.services = services; nodeHealthCheck.setSelfLink(NodeHealthCheckService.SELF_LINK); host.sendRequest(Operation .createPatch(UriUtils.buildUri(host, nodeHealthCheck.getSelfLink())) .setBody(nodeHealthCheck) .setReferer(host.getUri()) .setCompletion((o, e) -> { if (e != null) { host.log(Level.SEVERE, "Exception while register services for healthcheck: %s", e); } })); }
private static void registerServiceForMigration(ServiceHost host, Set<String> services) { NodeMigrationService nodeMigration = new NodeMigrationService(); nodeMigration.services = services; host.sendRequest(Operation .createPatch(UriUtils.buildUri(host, NodeMigrationService.SELF_LINK)) .setBody(nodeMigration) .setReferer(host.getUri()) .setCompletion((o, e) -> { if (e != null) { host.log(Level.SEVERE, "Exception while register services for migration: %s", e); } })); }
private void proceedWithExecution(Closure closureRequest, ClosureDescription taskDef) { logInfo("Fetching leased closure: %s", closureRequest.documentSelfLink); getServiceHost().sendRequest(Operation .createGet(getServiceHost(), closureRequest.documentSelfLink) .setReferer(getServiceHost().getUri()) .setCompletion((o, ex) -> { if (ex != null) { Utils.logWarning("Failed to fetch closure before execution! Reason: %s", ex.getMessage()); o.fail(new Exception("Unable to fetch closure.")); } else { Closure closure = o.getBody(Closure.class); logInfo("Closure leased. state: %s %s", closure.state, closure.inputs); executeLocal(closure, taskDef); o.complete(); } })); }
private void sendSelfPatch(Closure body) { URI uri = UriUtils.buildUri(getServiceHost(), body.documentSelfLink); logInfo("Executing self patching of: %s", uri); getServiceHost().sendRequest(Operation .createPatch(uri) .setReferer(getServiceHost().getUri()) .setBody(body) .setCompletion((o, ex) -> { if (ex != null) { Utils.logWarning("Self patch failed: %s", Utils.toString(ex)); } })); }
private void requestEntityInspection(ResourceState kubernetesState) { AdapterRequest request = new AdapterRequest(); request.resourceReference = UriUtils.buildPublicUri(getHost(), kubernetesState.documentSelfLink); request.operationTypeId = KubernetesOperationType.INSPECT.id; request.serviceTaskCallback = ServiceTaskCallback.createEmpty(); getHost().sendRequest(Operation .createPatch(getHost(), ManagementUriParts.ADAPTER_KUBERNETES) .setBody(request) .setReferer(getHost().getUri()) .setCompletion((o, ex) -> { if (ex != null) { Utils.logWarning( "Exception while inspect request for kubernetes entity: %s. " + "Error: %s", kubernetesState.documentSelfLink, Utils.toString(ex)); } })); }