patchBody.customProperties.put(EPZ_CUSTOM_PROP_NAME_PREFIX + extractRpId(state), assign ? EPZ_CUSTOM_PROP_VALUE : null); patchOps.add(
private void queryComputesToUnassign(EpzComputeEnumerationTaskState state) { Query mustBeOut = Utils.clone(state.resourcePoolQuery) .setOccurance(Occurance.MUST_NOT_OCCUR); Query areIn = Query.Builder.create() .addKindFieldClause(ComputeState.class) .addCompositeFieldClause(ResourceState.FIELD_NAME_CUSTOM_PROPERTIES, EPZ_CUSTOM_PROP_NAME_PREFIX + extractRpId(state), EPZ_CUSTOM_PROP_VALUE) .build(); Query combinedQuery = Query.Builder.create().addClauses(mustBeOut, areIn).build(); queryComputes(state, combinedQuery, EpzComputeEnumerationTaskState.SubStage.UNASSIGN_COMPUTES, EpzComputeEnumerationTaskState.SubStage.QUERY_COMPUTES_TO_ASSIGN); }
private void queryComputesToAssign(EpzComputeEnumerationTaskState state) { Query mustBeIn = Utils.clone(state.resourcePoolQuery); Query areOut = Query.Builder.create() .addKindFieldClause(ComputeState.class) .addFieldClause( QuerySpecification.buildCompositeFieldName( ResourceState.FIELD_NAME_CUSTOM_PROPERTIES, EPZ_CUSTOM_PROP_NAME_PREFIX + extractRpId(state)), EPZ_CUSTOM_PROP_VALUE, MatchType.TERM, Occurance.MUST_NOT_OCCUR) .build(); Query combinedQuery = Query.Builder.create().addClauses(mustBeIn, areOut).build(); queryComputes(state, combinedQuery, EpzComputeEnumerationTaskState.SubStage.ASSIGN_COMPUTES, EpzComputeEnumerationTaskState.SubStage.COMPLETED); }
/** * 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); }