use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AWSSecurityGroupEnumerationAdapterService method createResponse.
/**
* Having the enumerated SecurityGroup Ids, query the States and provide them in the response
*/
private DeferredResult<AWSSecurityGroupEnumerationResponse> createResponse(SecurityGroupEnumContext context) {
AWSSecurityGroupEnumerationResponse response = new AWSSecurityGroupEnumerationResponse();
if (context.enumExternalResourcesIds == null || context.enumExternalResourcesIds.isEmpty()) {
DeferredResult<AWSSecurityGroupEnumerationResponse> deferredResult = new DeferredResult<>();
deferredResult.complete(response);
return deferredResult;
}
Query.Builder findSecurityGroupStates = Builder.create().addKindFieldClause(SecurityGroupState.class).addFieldClause(ResourceState.FIELD_NAME_COMPUTE_HOST_LINK, context.request.parentCompute.documentSelfLink).addInClause(SecurityGroupState.FIELD_NAME_ID, context.enumExternalResourcesIds);
QueryTop<SecurityGroupState> querySecurityGroupStates = new QueryTop<>(context.service.getHost(), findSecurityGroupStates.build(), SecurityGroupState.class, context.request.parentCompute.tenantLinks).setMaxResultsLimit(context.enumExternalResourcesIds.size());
querySecurityGroupStates.setClusterType(ServiceTypeCluster.INVENTORY_SERVICE);
return querySecurityGroupStates.queryDocuments(sgState -> response.securityGroupStates.put(sgState.id, sgState.documentSelfLink)).thenApply(aVoid -> response);
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AWSEnumerationUtils method getCDsRepresentingVMsInLocalSystemCreatedByEnumerationQuery.
/**
* Get all the compute descriptions already in the system that correspond to virtual machine and filter by.
* This query is primarily used during instance discovery to find compute descriptions that exist in the system
* to match the instances received from AWS.
* The query filters out compute descriptions that represent compute hosts and also checks for other conditions
* as below:
* - Environment name(AWS),
* - id (instance type),
* - ZoneId(placement).
* - Created from the enumeration task.
* Compute hosts are modeled to support VM guests.So excluding them from the query to get
* compute descriptions for VMs.
*/
public static QueryTask getCDsRepresentingVMsInLocalSystemCreatedByEnumerationQuery(Set<InstanceDescKey> descriptionsSet, List<String> tenantLinks, String regionId, String parentComputeLink, String endpointLink) {
String sourceTaskName = QueryTask.QuerySpecification.buildCompositeFieldName(ComputeState.FIELD_NAME_CUSTOM_PROPERTIES, SOURCE_TASK_LINK);
Query query = Query.Builder.create().addKindFieldClause(ComputeDescription.class).addFieldClause(ComputeDescription.FIELD_NAME_ENVIRONMENT_NAME, ComputeDescription.ENVIRONMENT_NAME_AWS).addFieldClause(ComputeDescription.FIELD_NAME_REGION_ID, regionId).addFieldClause(ComputeDescription.FIELD_NAME_COMPUTE_HOST_LINK, parentComputeLink).addFieldClause(sourceTaskName, ResourceEnumerationTaskService.FACTORY_LINK).build();
// Instance type and zone should fall in one of the passed in values
Query groupFilter = new Query();
groupFilter.occurance = Occurance.MUST_OCCUR;
for (InstanceDescKey key : descriptionsSet) {
Query itf = new Query().setTermPropertyName(ComputeDescription.FIELD_NAME_ID).setTermMatchValue(key.instanceType);
itf.occurance = Occurance.MUST_OCCUR;
Query zf = new Query().setTermPropertyName(ComputeDescription.FIELD_NAME_ZONE_ID).setTermMatchValue(key.zoneId);
zf.occurance = Occurance.MUST_OCCUR;
Query d = new Query();
d.occurance = Occurance.SHOULD_OCCUR;
d.addBooleanClause(itf);
d.addBooleanClause(zf);
groupFilter.addBooleanClause(d);
}
query.addBooleanClause(groupFilter);
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).addOption(QueryOption.EXPAND_CONTENT).addOption(QueryOption.INDEXED_METADATA).addOption(QueryOption.TOP_RESULTS).setResultLimit(getQueryResultLimit()).build();
queryTask.documentSelfLink = UUID.randomUUID().toString();
queryTask.tenantLinks = tenantLinks;
return queryTask;
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAWSSetupUtils method getInternalTagsByType.
public static ServiceDocumentQueryResult getInternalTagsByType(VerificationHost host, String type) {
Query query = Query.Builder.create().addKindFieldClause(TagService.TagState.class).addFieldClause(TagService.TagState.FIELD_NAME_KEY, PhotonModelConstants.TAG_KEY_TYPE).addFieldClause(TagService.TagState.FIELD_NAME_VALUE, type).build();
Query externalQuery = new Query().setTermPropertyName(TagService.TagState.FIELD_NAME_EXTERNAL).setTermMatchValue(Boolean.FALSE.toString());
externalQuery.occurance = Query.Occurance.SHOULD_OCCUR;
Query originQuery = new Query().addBooleanClause(Query.Builder.create().addCollectionItemClause(TagService.TagState.FIELD_NAME_ORIGIN, DISCOVERED.toString(), Occurance.MUST_NOT_OCCUR).addCollectionItemClause(TagService.TagState.FIELD_NAME_ORIGIN, SYSTEM.toString(), Query.Occurance.SHOULD_OCCUR).addCollectionItemClause(TagService.TagState.FIELD_NAME_ORIGIN, USER_DEFINED.toString(), Query.Occurance.SHOULD_OCCUR).build()).setOccurance(Query.Occurance.SHOULD_OCCUR);
Query originOrExternalQuery = new Query().addBooleanClause(externalQuery).addBooleanClause(originQuery).setOccurance(Query.Occurance.MUST_OCCUR);
query.addBooleanClause(originOrExternalQuery);
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).addOption(QuerySpecification.QueryOption.EXPAND_CONTENT).addOption(QuerySpecification.QueryOption.TOP_RESULTS).setResultLimit(getQueryResultLimit()).build();
queryTask.documentSelfLink = UUID.randomUUID().toString();
host.createQueryTaskService(queryTask, false, true, queryTask, null);
ServiceDocumentQueryResult results = queryTask.results;
return results;
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestUtils method getSubnetStates.
/**
* Get all SubnetStates within passed NetworkState. In other words, get all subnet states that
* refer the network state passed.
*/
public static List<SubnetState> getSubnetStates(VerificationHost host, NetworkState networkState) throws Throwable {
Query queryForReferrers = QueryUtils.queryForReferrers(networkState.documentSelfLink, SubnetState.class, SubnetState.FIELD_NAME_NETWORK_LINK);
QueryByPages<SubnetState> querySubnetStatesReferrers = new QueryByPages<>(host, queryForReferrers, SubnetState.class, networkState.tenantLinks, null, networkState.computeHostLink);
DeferredResult<List<SubnetState>> subnetDR = querySubnetStatesReferrers.collectDocuments(Collectors.toList());
return waitToComplete(subnetDR);
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAzureEnumerationTask method validateVirtualNetworkGateways.
/**
* Validates that the Gateway information discovered from Azure has been propagated to the
* NetworkState custom properties.
*/
private void validateVirtualNetworkGateways(AzureNicSpecs nicSpecs) throws Throwable {
if (this.isMock) {
return;
}
// Query all network states in the system
Map<String, NetworkState> networkStatesMap = ProvisioningUtils.getResourceStates(this.host, NetworkService.FACTORY_LINK, NetworkState.class);
AtomicBoolean isGatewayFound = new AtomicBoolean(false);
networkStatesMap.values().forEach(networkState -> {
if (networkState.name.contains(nicSpecs.network.name)) {
List<SubnetState> subnetStates = getSubnetStates(this.host, networkState);
assertFalse(subnetStates.isEmpty());
subnetStates.stream().filter(subnetState -> AzureConstants.GATEWAY_SUBNET_NAME.equalsIgnoreCase(subnetState.name)).forEach(subnetState -> {
this.host.log(Level.INFO, "Validating gateway for network" + "(name %s, id: %s)", networkState.name, networkState.id);
assertNotNull("Custom properties are null.", networkState.customProperties);
assertNotNull("Virtual gateway property not found.", networkState.customProperties.get(ComputeProperties.FIELD_VIRTUAL_GATEWAY));
assertNotNull("SubnetState custom properties are null.", subnetState.customProperties);
assertEquals("Gateway SubnetState is not marked currectly with " + "infrastructure use custom property.", Boolean.TRUE.toString(), subnetState.customProperties.get(ComputeProperties.INFRASTRUCTURE_USE_PROP_NAME));
isGatewayFound.set(true);
});
}
});
assertTrue("Gateway custom property was not found at all.", isGatewayFound.get());
}
Aggregations