private DeferredResult<List<ClusterDto>> getInfoFromHostsWithinPlacementZone(String projectLink, ServiceDocumentQueryResult queryResult, Operation get) { Map<String, ElasticPlacementZoneConfigurationState> ePZstates = QueryUtil .extractQueryResult( queryResult, ElasticPlacementZoneConfigurationState.class); List<DeferredResult<ClusterDto>> clusterDtoList = ePZstates.keySet().stream() .map(key -> ClusterUtils.getHostsWithinPlacementZone(ePZstates.get(key) .resourcePoolState.documentSelfLink, projectLink, get, getHost()) .thenApply(computeStates -> { return ClusterUtils.placementZoneAndItsHostsToClusterDto( ePZstates.get(key).resourcePoolState, computeStates); })) .collect(Collectors.toList()); return DeferredResult.allOf(clusterDtoList); }
Map<String, ResourcePoolState> rpByLink = QueryUtil.extractQueryResult( ops.get(operationsToJoin.get(0).getId()) .getBody(ServiceDocumentQueryResult.class), ResourcePoolState.class); Map<String, ElasticPlacementZoneState> epzByLink = QueryUtil.extractQueryResult( ops.get(operationsToJoin.get(1).getId()) .getBody(ServiceDocumentQueryResult.class),
@Override public void handlePost(Operation post) { URI serviceUri = UriUtils.buildUri(ElasticPlacementZoneConfigurationService.SELF_LINK); Operation.createGet(this, UriUtils.buildExpandLinksQueryUri(serviceUri).toString()) .setReferer(UriUtils.buildUri(getHost(), SELF_LINK)) .setCompletion((op, ex) -> { if (ex != null) { logSevere("Failed to get resource pool states"); post.fail(ex); } else { ServiceDocumentQueryResult queryResult = op .getBody(ServiceDocumentQueryResult.class); Map<String, ElasticPlacementZoneConfigurationState> states = QueryUtil .extractQueryResult( queryResult, ElasticPlacementZoneConfigurationState.class); logInfo("Number of resource pool states found %d", states.size()); if (states.isEmpty()) { logInfo("No resource pools found. Tranformation completed successfully"); post.complete(); return; } poolsCount = new AtomicInteger(states.size()); processPools(states.values(), post); } }).sendWith(getHost()); }
@Test public void testGetAllExpand() throws Throwable { String rp1Link = createRp().documentSelfLink; String rp2Link = createRp().documentSelfLink; String epzLink = createEpz(rp2Link, "tag1").documentSelfLink; URI serviceUri = UriUtils.buildUri(host, ElasticPlacementZoneConfigurationService.SELF_LINK); ServiceDocumentQueryResult queryResult = doOperation(null, UriUtils.buildExpandLinksQueryUri(serviceUri), ServiceDocumentQueryResult.class, false, Action.GET); assertNotNull(queryResult); assertNotNull(queryResult.documents); assertTrue(queryResult.documentCount >= 2); Map<String, ElasticPlacementZoneConfigurationState> states = QueryUtil.extractQueryResult( queryResult, ElasticPlacementZoneConfigurationState.class); ElasticPlacementZoneConfigurationState state1 = states.get(rp1Link); assertNotNull(state1); assertNotNull(state1.resourcePoolState); assertNull(state1.epzState); assertEquals(rp1Link, state1.documentSelfLink); assertEquals(rp1Link, state1.resourcePoolState.documentSelfLink); ElasticPlacementZoneConfigurationState state2 = states.get(rp2Link); assertNotNull(state2); assertNotNull(state2.resourcePoolState); assertNotNull(state2.epzState); assertEquals(rp2Link, state2.documentSelfLink); assertEquals(rp2Link, state2.resourcePoolState.documentSelfLink); assertEquals(epzLink, state2.epzState.documentSelfLink); assertEquals(state2.resourcePoolState.documentSelfLink, state2.epzState.resourcePoolLink); assertEquals(tagSet("tag1"), state2.epzState.tagLinksToMatch); }