@Override public Set<Resource> buildStack( Stack stack, String gateWayUserData, String coreUserData, Map<String, Object> setupProperties) { LOGGER.info("Assembling launch request for stack: {}", stack); CloudContext cloudContext = new CloudContext(stack); CloudCredential cloudCredential = credentialConverter.convert(stack.getCredential()); CloudStack cloudStack = cloudStackConverter.convert(stack, coreUserData, gateWayUserData); instanceMetadataService.saveInstanceRequests(stack, cloudStack.getGroups()); LaunchStackRequest launchRequest = new LaunchStackRequest(cloudContext, cloudCredential, cloudStack); LOGGER.info("Triggering event: {}", launchRequest); eventBus.notify(launchRequest.selector(), Event.wrap(launchRequest)); try { LaunchStackResult res = launchRequest.await(); LOGGER.info("Result: {}", res); validateResourceResults(cloudContext, res); List<CloudResourceStatus> results = res.getResults(); updateNodeCount(stack.getId(), cloudStack.getGroups(), results, true); return transformResults(results, stack); } catch (InterruptedException e) { LOGGER.error("Error while launching stack", e); throw new OperationException( "Unexpected exception occurred during build stack: " + e.getMessage()); } }
private void validateResourceResults(CloudContext cloudContext, LaunchStackResult res) { validateResourceResults(cloudContext, res.getException(), res.getResults(), true); }