.addBooleanClause(QueryUtil.addTenantClause(tenantLinks));
@SuppressWarnings("unchecked") @Override public void handlePost(Operation post) { logInfo("Population of favorite images for specific tenants triggered."); List<String> tenantLinks = post.getBody(List.class); List<FavoriteImage> globalFavorites = new LinkedList<>(); QueryTask queryTask = QueryUtil.buildQuery(FavoriteImage.class, true, QueryUtil.addTenantClause(null)); QueryUtil.addExpandOption(queryTask); new ServiceDocumentQuery<>(getHost(), FavoriteImage.class) .query(queryTask, r -> { if (r.hasException()) { post.fail(r.getException()); } else if (r.hasResult()) { globalFavorites.add(r.getResult()); } else { createFavoriteImagesBasedOnFlagStatus(post, tenantLinks, globalFavorites); } }); }
private void waitForCreationOfTenantedFavoriteImages() throws Throwable { AtomicBoolean cotinue = new AtomicBoolean(); waitFor(() -> { QueryTask queryTask = QueryUtil.buildQuery(FavoriteImage.class, true, QueryUtil.addTenantClause(tenantLinks)); ServiceDocumentQuery<FavoriteImage> query = new ServiceDocumentQuery<>(host, FavoriteImage.class); query.query(queryTask, (r) -> { if (r.hasException()) { host.log("Exception while retrieving FavoriteImage: " + r.getException()); cotinue.set(true); } else if (r.hasResult()) { if (r.getCount() == 15) { cotinue.set(true); } } }); return cotinue.get(); }); } }
Query tenantLinkClause = QueryUtil.addTenantClause(imageToFavorite.tenantLinks); queryTask.querySpec.query.addBooleanClause(tenantLinkClause);
/** * Generates a ComputeState query based on the tag links defined in the elastic placement zone * and the configuration of the underlying resource pool. * * The query includes computes matched by tags and computes explicitly assigned to the RP: * is of type ComputeState AND * (compute RP * ? (match endpoint AND compute type in VM_HOST, ZONE) * : (compute type is VM_GUEST)) AND * (match-tags OR explicitly-assigned) AND * tenant links matches RP tenant links */ private static Query generateRpQuery(ElasticPlacementZoneState epz, ResourcePoolState rp) { Query.Builder tagQueryBuilder = Query.Builder.create(); for (String tagLink : epz.tagLinksToMatch) { // all tagLinksToMatch must be set on the compute tagQueryBuilder.addCollectionItemClause(ResourceState.FIELD_NAME_TAG_LINKS, tagLink); } Query kindClause = Query.Builder.create().addKindFieldClause(ComputeState.class).build(); Query assignmentClause = Query.Builder.create() .addClause(tagQueryBuilder.build().setOccurance(Occurance.SHOULD_OCCUR)) .addFieldClause(ComputeState.FIELD_NAME_RESOURCE_POOL_LINK, epz.resourcePoolLink, Occurance.SHOULD_OCCUR) .build(); Query tenantClause = QueryUtil.addTenantClause(rp.tenantLinks); Query epzQuery = Query.Builder.create() .addClauses(kindClause, assignmentClause, tenantClause) .build(); return epzQuery; }