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 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 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 queryResourceNamePrefixes(ResourceNamePrefixTaskState state, boolean globalSearch) { // match on group property: QueryTask q = QueryUtil.buildQuery(ResourceNamePrefixState.class, true); q.tenantLinks = state.tenantLinks; List<String> documentLinks = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), ResourceNamePrefixState.class) .query(q, (r) -> { if (r.hasException()) { failTask("Cannot retrieve prefixes", r.getException()); } else if (r.hasResult()) { documentLinks.add(r.getDocumentSelfLink()); } else { selectResourceNamePrefix(state, documentLinks.iterator(), globalSearch); } }); }
public static <R extends MultiTenantDocument> void getDocuments(Class<R> type, Consumer<List<MultiTenantDocument>> consumer, ServiceHost host, Operation post) { QueryTask queryTask = QueryUtil.buildQuery(type, true); QueryUtil.addExpandOption(queryTask); List<MultiTenantDocument> documents = new ArrayList<>(); new ServiceDocumentQuery<R>(host, type) .query(queryTask, (r) -> { if (r.hasException()) { host.log(Level.SEVERE, "Failed to query for project states"); post.fail(r.getException()); } else if (r.hasResult()) { documents.add((MultiTenantDocument) r.getResult()); } else { host.log(Level.INFO, "projects found: %d", documents.size()); consumer.accept(documents); } }); } }
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); } }); }
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); } }); }
@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 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 void queryVolumes(ContainerHostRemovalTaskState state) { QueryTask volumeQuery = QueryUtil.buildQuery(ContainerVolumeState.class, false); QueryUtil.addListValueClause(volumeQuery, ContainerVolumeState.FIELD_NAME_ORIGINATING_HOST_LINK, state.resourceLinks); Set<String> volumeLinks = new HashSet<>(); new ServiceDocumentQuery<ContainerVolumeState>(getHost(), ContainerVolumeState.class).query( volumeQuery, (r) -> { if (r.hasException()) { failTask("Failure retrieving query results", r.getException()); return; } else if (r.hasResult()) { volumeLinks.add(r.getDocumentSelfLink()); } else { if (volumeLinks.isEmpty()) { filterKubernetesHosts(state); return; } removeVolumes(state, volumeLinks); } }); }
@Override public void handlePost(Operation post) { QueryTask queryTask = QueryUtil.buildQuery(ComputeState.class, true); QueryUtil.addExpandOption(queryTask); List<ComputeState> hosts = new ArrayList<ComputeState>(); new ServiceDocumentQuery<ComputeState>(getHost(), ComputeState.class) .query(queryTask, (r) -> { if (r.hasException()) { post.fail(r.getException()); logSevere("Failed to get compute states"); } else if (r.hasResult()) { hosts.add(r.getResult()); } else { if (hosts.isEmpty()) { post.complete(); } logInfo("Number of hosts found: %d", hosts.size()); processHosts(hosts, post); } }); }
@Override public void handleStart(Operation post) { QueryTask queryTask = QueryUtil.buildQuery(ProjectState.class, true); QueryUtil.addExpandOption(queryTask); List<ProjectState> projects = new ArrayList<ProjectState>(); new ServiceDocumentQuery<ProjectState>(getHost(), ProjectState.class) .query(queryTask, (r) -> { if (r.hasException()) { post.fail(r.getException()); } else if (r.hasResult()) { projects.add(r.getResult()); } else { getHost().log(Level.INFO, "projects found: %d", projects.size()); processProjects(projects, post); } }); }
private DeferredResult<Void> loadSubscriptions() { DeferredResult<Void> res = new DeferredResult<>(); QueryTask q = QueryUtil.buildQuery(ExtensibilitySubscription.class, false); QueryUtil.addExpandOption(q); new ServiceDocumentQuery<>(getHost(), ExtensibilitySubscription.class) .query(q, (r) -> { if (r.hasException()) { logSevere("Exception while initializing LifecycleExtensibilityManager. " + "Error: [%s]", r.getException().getMessage()); res.fail(r.getException()); } else if (r.hasResult()) { ExtensibilitySubscription state = r.getResult(); addExtensibilitySubscription(state); } else { logInfo("Loaded %d extensibility states", subscriptions.size()); res.complete(null); } }); return res; }
private List<CompositionSubTaskState> queryCompositionSubTasks() { QueryTask q = QueryUtil.buildQuery(CompositionSubTaskState.class, false); q.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT); ServiceDocumentQuery<CompositionSubTaskState> query = new ServiceDocumentQuery<>(host, CompositionSubTaskState.class); List<CompositionSubTaskState> result = new ArrayList<>(); TestContext ctx = testCreate(1); query.query(q, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); } else if (r.hasResult()) { result.add(r.getResult()); } else { ctx.completeIteration(); } }); ctx.await(); return result; }
private List<CompositeKubernetesRemovalTaskState> queryCompositeKubernetesRemovalTask() { QueryTask q = QueryUtil.buildQuery(CompositeKubernetesRemovalTaskState.class, false); q.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT); ServiceDocumentQuery<CompositeKubernetesRemovalTaskState> query = new ServiceDocumentQuery<>( host, CompositeKubernetesRemovalTaskState.class); List<CompositeKubernetesRemovalTaskState> result = new ArrayList<>(); TestContext ctx = testCreate(1); query.query(q, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); } else if (r.hasResult()) { result.add(r.getResult()); } else { ctx.completeIteration(); } }); ctx.await(); return result; } }
public List<String> getDocumentLinksOfType(Class<? extends ServiceDocument> type) throws Throwable { TestContext ctx = testCreate(1); QueryTask query = QueryUtil.buildQuery(type, true); List<String> result = new LinkedList<>(); new ServiceDocumentQuery<>( host, type).query(query, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); return; } else if (r.hasResult()) { result.add(r.getDocumentSelfLink()); } else { ctx.completeIteration(); } }); ctx.await(); return result; }
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 verifyCompositesRemoved() throws Throwable { QueryTask q = QueryUtil.buildQuery(CompositeComponent.class, false); ServiceDocumentQuery<?> query = new ServiceDocumentQuery<>(host, CompositeComponent.class); TestContext ctx = testCreate(1); query.query(q, (r) -> { if (r.hasException()) { host.log(Level.SEVERE, "Exception during search for CompositeComponents", r.getException().getMessage()); ctx.failIteration(r.getException()); } else if (r.hasResult()) { ctx.failIteration(new IllegalStateException("CompositeComponents found!")); } else { ctx.completeIteration(); } }); ctx.await(); } }