@Override protected QueryTask getDescQuery() { return QueryUtil.buildPropertyQuery(ContainerDescription.class, ContainerDescription.FIELD_NAME_POD, pod); }
private DeferredResult<Void> queryExistingContainerStates(String containerHostLink) { QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerState.class, ContainerState.FIELD_NAME_PARENT_LINK, containerHostLink); DeferredResult<Void> df = new DeferredResult<>(); new ServiceDocumentQuery<ContainerState>(host, ContainerState.class) .query(queryTask, processContainerStatesQueryResults(df)); return df; }
private void queryVolumesByHost(AdapterRequest state, Consumer<List<ContainerVolumeState>> callback) { String hostLink = state.resourceReference.getPath(); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerVolumeToHostState.class, MockDockerVolumeToHostState.FIELD_NAME_HOST_LINK, hostLink); QueryUtil.addExpandOption(q); List<ContainerVolumeState> volumeStates = new ArrayList< >(); new ServiceDocumentQuery<>(getHost(), MockDockerVolumeToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { volumeStates.add(buildContainerVolume(r.getResult())); } else { callback.accept(volumeStates); } }); }
private void queryContainersByHost(AdapterRequest state, Consumer<List<ContainerState>> callback) { String parentLink = state.resourceReference.getPath(); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerContainerToHostState.class, MockDockerContainerToHostState.FIELD_NAME_PARENT_LINK, parentLink); QueryUtil.addExpandOption(q); List<ContainerState> containerStates = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), MockDockerContainerToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { containerStates.add(buildContainer(r.getResult())); } else { callback.accept(containerStates); } }); }
private void queryNetworksByHost(AdapterRequest state, Consumer<List<ContainerNetworkState>> callback) { String hostLink = state.resourceReference.getPath(); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerNetworkToHostState.class, MockDockerNetworkToHostState.FIELD_NAME_HOST_LINK, hostLink); QueryUtil.addExpandOption(q); List<ContainerNetworkState> networkStates = new ArrayList< >(); new ServiceDocumentQuery<>(getHost(), MockDockerNetworkToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { networkStates.add(buildContainerNetwork(r.getResult())); } else { callback.accept(networkStates); } }); }
private void removeNetworkByReference(MockAdapterRequest state) { String networkName = Service.getId(state.resourceReference.getPath()); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerNetworkToHostState.class, MockDockerNetworkToHostState.FIELD_NAME_NAME, networkName); List<String> mockNetworkToHostLinks = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), MockDockerNetworkToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { mockNetworkToHostLinks.add(r.getDocumentSelfLink()); } else { removeMockNetworkFromHost(state, mockNetworkToHostLinks); } }); }
private void removeContainerByReference(MockAdapterRequest state) { String containerName = Service.getId(state.resourceReference.getPath()); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerContainerToHostState.class, MockDockerContainerToHostState.FIELD_NAME_NAME, containerName); List<String> mockContainerToHostLinks = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), MockDockerContainerToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { mockContainerToHostLinks.add(r.getDocumentSelfLink()); } else { removeMockContainerFromHost(state, mockContainerToHostLinks); } }); }
@SuppressWarnings("unchecked") private <T extends ServiceDocument> void countResourcesForPlacement( GroupResourcePlacementState state, Consumer<ServiceDocumentQueryElementResult<T>> completionHandler) { QueryTask queryTask; Class<T> resourceClass; if (ResourceType.CONTAINER_TYPE.getName().equals(state.resourceType)) { resourceClass = (Class<T>) ContainerState.class; queryTask = QueryUtil.buildPropertyQuery(resourceClass, ContainerState.FIELD_NAME_GROUP_RESOURCE_PLACEMENT_LINK, state.documentSelfLink); } else { throw new LocalizableValidationException("Unsupported placement resourceType " + state.resourceType, "compute.placements.invalid.resource.type"); } QueryUtil.addCountOption(queryTask); new ServiceDocumentQuery<>(getHost(), resourceClass) .query(queryTask, completionHandler); }
private void removeVolumeByReference(MockAdapterRequest state) { String volumeName = Service.getId(state.resourceReference.getPath()); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerVolumeToHostState.class, MockDockerVolumeToHostState.FIELD_NAME_NAME, volumeName); List<String> mockVolumeToHostLinks = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), MockDockerVolumeToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { mockVolumeToHostLinks.add(r.getDocumentSelfLink()); } else { removeMockVolumeFromHost(state, mockVolumeToHostLinks); } }); }
private List<GroupResourcePlacementState> getPlacementsForZone(String placementZoneLink) { QueryTask queryTask = QueryUtil.buildPropertyQuery(GroupResourcePlacementState.class, GroupResourcePlacementState.FIELD_NAME_RESOURCE_POOL_LINK, placementZoneLink); QueryByPages<GroupResourcePlacementState> pages = new QueryByPages<>(host, queryTask.querySpec.query, GroupResourcePlacementState.class, null); return QueryTemplate.waitToComplete(pages.collectDocuments(Collectors.toList())); }
private void queryExistingContainerStates(ContainerListCallback body) { String containerHostLink = body.containerHostLink; QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerState.class, ContainerState.FIELD_NAME_PARENT_LINK, containerHostLink); QueryUtil.addExpandOption(queryTask); QueryUtil.addBroadcastOption(queryTask); new ServiceDocumentQuery<ContainerState>(getHost(), ContainerState.class) .query(queryTask, processContainerStatesQueryResults(body)); }
private DeferredResult<List<ComputeState>> getHostsForPool( ElasticPlacementZoneConfigurationState pool) { ResourcePoolQueryHelper helper = ResourcePoolQueryHelper.createForResourcePool(getHost(), pool.documentSelfLink); helper.setExpandComputes(true); DeferredResult<List<ComputeState>> deferredResult = new DeferredResult<>(); QueryTask queryTask = QueryUtil.buildPropertyQuery(ComputeState.class, ComputeState.FIELD_NAME_RESOURCE_POOL_LINK, pool.documentSelfLink); QueryUtil.addExpandOption(queryTask); helper.query((qr) -> { if (qr.error != null) { logSevere( "Failed to query hosts with resource pool link %s", pool.documentSelfLink); deferredResult.fail(qr.error); } else { logInfo("Hosts found %d for resource pool %s", qr.computesByLink.size(), pool.documentSelfLink); deferredResult.complete(new ArrayList<>(qr.computesByLink.values())); } }); return deferredResult; }
private void proceedWithComputeStates(ContainerDescription containerDesc, AdmiralAdapterTaskState state, Class<? extends ServiceDocument> type, String propId, String propValue, Consumer<ServiceDocumentQuery.ServiceDocumentQueryElementResult<ServiceDocument>> completionHandler) { QueryTask q = QueryUtil.buildPropertyQuery(type, propId, propValue); q.documentExpirationTimeMicros = ServiceDocumentQuery.getDefaultQueryExpiration(); QueryUtil.addExpandOption(q); sendRequest(Operation .createPost(UriUtils.buildUri(getHost(), ServiceUriPaths.CORE_QUERY_TASKS)) .setBody(q) .setCompletion( (o, e) -> { if (e != null) { completionHandler.accept(error(e)); return; } handleFetchedComputeStates(containerDesc, state, propValue, completionHandler, o); })); }
public static DeferredResult<Void> handleDelete(Service service, Operation op) { ResourcePoolState currentState = service.getState(op); QueryTask queryTask; if (currentState.query != null) { queryTask = QueryTask.Builder.createDirectTask().setQuery(currentState.query).build(); } else if (currentState.documentSelfLink != null) { queryTask = QueryUtil.buildPropertyQuery(ComputeState.class, ComputeState.FIELD_NAME_RESOURCE_POOL_LINK, currentState.documentSelfLink); } else { return null; } QueryUtil.addCountOption(queryTask); return QueryUtils.startQueryTask(service, queryTask) .thenAccept(qt -> { ServiceDocumentQueryResult result = qt.results; if (result.documentCount != 0) { throw new LocalizableValidationException( PLACEMENT_ZONE_IN_USE_MESSAGE, PLACEMENT_ZONE_IN_USE_MESSAGE_CODE); } }); } }
private ComputeState assertComputeStateExists(ContainerHostSpec hostSpec) { QueryTask queryTask = QueryUtil.buildPropertyQuery(ComputeState.class, ComputeState.FIELD_NAME_DESCRIPTION_LINK, hostSpec.hostState.descriptionLink); QueryUtil.addExpandOption(queryTask); List<ComputeState> computeStates = new ArrayList<>(); host.testStart(1); new ServiceDocumentQuery<>(host, ComputeState.class) .query(queryTask, (r) -> { if (r.hasException()) { host.log("Exception while getting the compute state."); host.failIteration(r.getException()); } else if (r.hasResult()) { computeStates.add(r.getResult()); } else { if (computeStates.isEmpty()) { host.log("No compute state with description link %s", hostSpec.hostState.descriptionLink); host.failIteration(r.getException()); } else { host.completeIteration(); } } }); host.testWait(); assertHostPortProfileStateExists(computeStates.get(0).documentSelfLink); return computeStates.get(0); }
protected Set<ContainerState> getExistingContainersInAdapter() { host.testStart(1); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerContainerToHostState.class); QueryUtil.addExpandOption(q); Set<ContainerState> containerStates = new HashSet<>(); new ServiceDocumentQuery<>(host, MockDockerContainerToHostState.class).query(q, (r) -> { if (r.hasException()) { host.failIteration(r.getException()); } else if (r.hasResult()) { containerStates.add(buildContainer(r.getResult())); } else { host.completeIteration(); } }); host.testWait(); return containerStates; }
private void disableContainersForHost(String computeStateSelfLink) { QueryTask containerQuery = QueryUtil.buildPropertyQuery(ContainerState.class, ContainerState.FIELD_NAME_PARENT_LINK, computeStateSelfLink); ContainerState errorState = new ContainerState(); errorState.powerState = ContainerState.PowerState.ERROR; new ServiceDocumentQuery<>(getHost(), ContainerState.class).query( containerQuery, (r) -> { if (r.hasException()) { logWarning("Failed to retrieve containers for ComputeState: %s", computeStateSelfLink); return; } else if (r.hasResult()) { logWarning("Disable container %s, because host %s is unavailable", r.getDocumentSelfLink(), computeStateSelfLink); sendRequest(Operation .createPatch(this, r.getDocumentSelfLink()) .setAuthorizationContext(getSystemAuthorizationContext()) .setBodyNoCloning(errorState)); } }); }
private List<ContainerVolumeState> getVolumeStates() throws Throwable { List<ContainerVolumeState> volumeStatesFound = new ArrayList<>(); TestContext ctx = testCreate(1); ServiceDocumentQuery<ContainerVolumeState> query = new ServiceDocumentQuery<>(host, ContainerVolumeState.class); QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerVolumeState.class); QueryUtil.addExpandOption(queryTask); query.query(queryTask, (r) -> { if (r.hasException()) { host.log("Exception while retrieving ContainerVolumeState: " + (r.getException() instanceof CancellationException ? r.getException().getMessage() : Utils.toString(r.getException()))); ctx.fail(r.getException()); } else if (r.hasResult()) { volumeStatesFound.add(r.getResult()); } else { ctx.complete(); } }); ctx.await(); return volumeStatesFound; }
private List<ContainerNetworkState> getNetworkStates() throws Throwable { List<ContainerNetworkState> networkStatesFound = new ArrayList<>(); TestContext ctx = testCreate(1); ServiceDocumentQuery<ContainerNetworkState> query = new ServiceDocumentQuery<>(host, ContainerNetworkState.class); QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerNetworkState.class); QueryUtil.addExpandOption(queryTask); query.query(queryTask, (r) -> { if (r.hasException()) { host.log("Exception while retrieving ContainerNetworkState: " + (r.getException() instanceof CancellationException ? r.getException().getMessage() : Utils.toString(r.getException()))); ctx.fail(r.getException()); } else if (r.hasResult()) { networkStatesFound.add(r.getResult()); } else { ctx.complete(); } }); ctx.await(); return networkStatesFound; }
public static DeferredResult<Void> handleDelete(Service service, Operation op) { DeferredResult<Void> dr = new DeferredResult<>(); service.sendRequest(Operation.createPost(service, ServiceUriPaths.CORE_QUERY_TASKS) .setBody(QueryUtil.addCountOption(QueryUtil.buildPropertyQuery(ComputeState.class, QuerySpecification.buildCompositeFieldName( ComputeState.FIELD_NAME_CUSTOM_PROPERTIES, ComputeConstants.HOST_AUTH_CREDENTIALS_PROP_NAME), service.getSelfLink()))) .setCompletion((o, e) -> { if (e != null) { service.getHost().log(Level.WARNING, Utils.toString(e)); dr.fail(e); } ServiceDocumentQueryResult result = o.getBody(QueryTask.class).results; if (result.documentCount != 0) { op.fail(new LocalizableValidationException(CREDENTIALS_IN_USE_MESSAGE, CREDENTIALS_IN_USE_MESSAGE_CODE)); } dr.complete(null); })); return dr; }