/** * Triggers the enumeration task for the given resource pool. Makes sure no multiple tasks are * run in parallel for the same resource pool. */ public static void triggerForResourcePool(Service sender, String resourcePoolLink) { EpzComputeEnumerationTaskState task = new EpzComputeEnumerationTaskState(); task.resourcePoolLink = resourcePoolLink; task.documentSelfLink = extractRpId(task); Operation.createPost(sender.getHost(), EpzComputeEnumerationTaskService.FACTORY_LINK) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_FORCE_INDEX_UPDATE) .setBody(task) .setCompletion((o, e) -> { if (o.getStatusCode() == Operation.STATUS_CODE_NOT_MODIFIED) { sender.getHost().log(Level.FINE, "Enumeration task already running for " + resourcePoolLink); return; } if (e != null) { sender.getHost().log(Level.WARNING, "Failed to start enumeration task for %s: %s", resourcePoolLink, e.getMessage()); return; } sender.getHost().log(Level.INFO, "Started enumeration task for " + resourcePoolLink); }).sendWith(sender); }
private String startTask(String resourcePoolLink) throws Throwable { EpzComputeEnumerationTaskState initialState = new EpzComputeEnumerationTaskState(); initialState.resourcePoolLink = resourcePoolLink; EpzComputeEnumerationTaskState returnState = doOperation(initialState, UriUtils.buildUri(this.host, EpzComputeEnumerationTaskService.FACTORY_LINK), EpzComputeEnumerationTaskState.class, false, Action.POST); return returnState.documentSelfLink; } }