use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAWSEnumerationTask method getComputeStateFromId.
private ComputeState getComputeStateFromId(String instanceId) {
Query query = Query.Builder.create().addKindFieldClause(ComputeState.class).addFieldClause(ComputeState.FIELD_NAME_ID, instanceId).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).addOption(QueryOption.EXPAND_CONTENT).build();
Operation queryCompute = Operation.createPost(this.host, ServiceUriPaths.CORE_LOCAL_QUERY_TASKS).setReferer(this.host.getUri()).setBody(queryTask);
Operation compute = this.host.waitForResponse(queryCompute);
QueryTask response = compute.getBody(QueryTask.class);
ComputeState computeState = Utils.fromJson(response.results.documents.entrySet().iterator().next().getValue(), ComputeState.class);
return computeState;
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAWSEnumerationTask method validateS3Enumeration.
// Validate S3 bucket enumeration by querying DiskState and comparing result to expected number of documents
// and validate the size of tagLinks.
private void validateS3Enumeration(int expectedDiskCount, int expectedTagsCount) {
Query s3Query = QueryTask.Query.Builder.create().addKindFieldClause(DiskState.class).addFieldClause(DiskState.FIELD_NAME_NAME, TEST_BUCKET_NAME).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(s3Query).addOption(QueryOption.EXPAND_CONTENT).build();
Operation s3QueryOp = QueryUtils.createQueryTaskOperation(this.host, queryTask, ServiceTypeCluster.INVENTORY_SERVICE).setReferer(this.host.getUri());
Operation s3QueryResponse = this.host.waitForResponse(s3QueryOp);
QueryTask response = s3QueryResponse.getBody(QueryTask.class);
if (expectedDiskCount > 0) {
DiskState diskState = Utils.fromJson(response.results.documents.get(response.results.documentLinks.get(0)), DiskState.class);
assertEquals(expectedTagsCount, diskState.tagLinks.size());
}
DiskState diskState = Utils.fromJson(response.results.documents.get(response.results.documentLinks.get(0)), DiskState.class);
assertEquals(expectedDiskCount, diskState.endpointLinks.size());
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAWSEnumerationTask method validateBucketStateDeletionForNullRegion.
private void validateBucketStateDeletionForNullRegion() {
if (!this.isTestBucketPatched) {
this.host.log(Level.SEVERE, "Failure patching null region to test bucket diskState");
return;
}
Query query = Query.Builder.create().addKindFieldClause(DiskState.class).addFieldClause(DiskState.FIELD_NAME_ID, TEST_BUCKET_NAME).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).build();
Operation getTestBucketState = QueryUtils.createQueryTaskOperation(this.host, queryTask, ServiceTypeCluster.INVENTORY_SERVICE).setReferer(this.host.getUri());
Operation response = this.host.waitForResponse(getTestBucketState);
QueryTask queryTaskResponse = response.getBody(QueryTask.class);
assertTrue(queryTaskResponse.results.documentLinks.size() == 0);
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAWSEnumerationTask method validateS3TagStatesCreated.
private void validateS3TagStatesCreated() {
List<String> tags = new ArrayList<>();
tags.add(S3_TAG_KEY_1);
tags.add(S3_TAG_KEY_2);
Query s3TagsQuery = QueryTask.Query.Builder.create().addKindFieldClause(TagState.class).addInClause(TagState.FIELD_NAME_KEY, tags).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(s3TagsQuery).build();
Operation s3QueryOp = QueryUtils.createQueryTaskOperation(this.host, queryTask, ServiceTypeCluster.INVENTORY_SERVICE).setReferer(this.host.getUri());
Operation s3QueryResponse = this.host.waitForResponse(s3QueryOp);
QueryTask response = s3QueryResponse.getBody(QueryTask.class);
assertEquals(2, response.results.documentLinks.size());
// Validate the internal type tag for S3 got created
Operation internalTagOp = Operation.createGet(this.host, TagsUtil.newTagState(TAG_KEY_TYPE, AWSResourceType.s3_bucket.toString(), false, this.endpointState.tenantLinks).documentSelfLink).setReferer(this.host.getUri());
Operation internalTagOpResponse = this.host.waitForResponse(internalTagOp);
assertEquals(Operation.STATUS_CODE_OK, internalTagOpResponse.getStatusCode());
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AzureCostStatsService method createQueryForComputeStatesBySubscription.
/**
* Creates a query operation to get the compute states corresponding to the specified
* subscription GUID. The list of the resultant compute states is then passed to the specified
* handler for processing.
*
* @return operation object representing the query
*/
private Operation createQueryForComputeStatesBySubscription(Context context, String subscriptionGuid, Consumer<List<ComputeState>> queryResultConsumer) {
Query azureSubscriptionsQuery = Query.Builder.create().addKindFieldClause(ComputeState.class).addCompositeFieldClause(ComputeState.FIELD_NAME_CUSTOM_PROPERTIES, EndpointAllocationTaskService.CUSTOM_PROP_ENPOINT_TYPE, PhotonModelConstants.EndpointType.azure.name()).addCompositeFieldClause(ComputeState.FIELD_NAME_CUSTOM_PROPERTIES, PhotonModelConstants.CLOUD_ACCOUNT_ID, subscriptionGuid).addFieldClause(ComputeState.FIELD_NAME_TYPE, ComputeType.ENDPOINT_HOST).addInCollectionItemClause(ComputeState.FIELD_NAME_TENANT_LINKS, context.computeHostDesc.tenantLinks).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().addOption(QueryOption.EXPAND_CONTENT).addOption(QueryOption.TOP_RESULTS).setResultLimit(QueryUtils.DEFAULT_MAX_RESULT_LIMIT).setQuery(azureSubscriptionsQuery).build();
queryTask.setDirect(true);
queryTask.tenantLinks = context.computeHostDesc.tenantLinks;
return QueryUtils.createQueryTaskOperation(this, queryTask, ServiceTypeCluster.INVENTORY_SERVICE).setCompletion((operation, exception) -> {
if (exception != null) {
getFailureConsumer(context).accept(exception);
return;
}
QueryTask responseTask = operation.getBody(QueryTask.class);
if (responseTask == null || responseTask.results == null || responseTask.results.documents == null) {
// Couldn't find compute state for subscription with specified GUID
return;
}
List<ComputeState> subscriptionComputeState = responseTask.results.documents.values().stream().map(s -> Utils.fromJson(s, ComputeState.class)).filter(cs -> !StringUtils.isEmpty(cs.endpointLink) && !CollectionUtils.isEmpty(cs.endpointLinks)).collect(Collectors.toList());
if (subscriptionComputeState == null || subscriptionComputeState.size() == 0) {
return;
}
queryResultConsumer.accept(subscriptionComputeState);
});
}
Aggregations