List of usage examples for com.google.common.util.concurrent FutureCallback onFailure
void onFailure(Throwable t);
From source file:com.vmware.photon.controller.clustermanager.statuschecks.SwarmStatusChecker.java
@Override public void checkSlavesStatus(final String masterAddress, final List<String> slaveAddresses, final FutureCallback<Boolean> callback) { Preconditions.checkNotNull(masterAddress, "masterAddress cannot be null"); logger.info("Checking Swarm: {}", masterAddress); try {// w w w. ja v a2s . c om String connectionString = createConnectionString(masterAddress); swarmClient.getNodeAddressesAsync(connectionString, new FutureCallback<Set<String>>() { @Override public void onSuccess(@Nullable Set<String> nodes) { if (!nodes.contains(masterAddress)) { logger.info("Node not registered with Swarm: {}", masterAddress); callback.onSuccess(false); return; } try { if (slaveAddresses == null || slaveAddresses.size() == 0) { // we are only checking the current master callback.onSuccess(true); } else { for (String slaveAddress : slaveAddresses) { if (!nodes.contains(slaveAddress)) { logger.info("Slave not registered with Swarm: {}", slaveAddress); callback.onSuccess(false); return; } } callback.onSuccess(true); } } catch (Exception e) { logger.warn("Failed to process Swarm nodes: ", e); callback.onFailure(e); } } @Override public void onFailure(Throwable t) { logger.warn("Swarm call failed: ", t); callback.onSuccess(false); } }); } catch (Exception e) { logger.warn("Swarm call failed: ", e); callback.onSuccess(false); } }
From source file:de.matzefratze123.heavyspleef.persistence.handler.ForwardingAsyncReadWriteHandler.java
public <R> ListenableFuture<R> runCallableThreadDynamic(Callable<R> callable, FutureCallback<R> callback) { ListenableFuture<R> future = null; if (callback == null) { callback = new FutureCallback<R>() { @Override/*www . j a va 2 s. c o m*/ public void onSuccess(R result) { } @Override public void onFailure(Throwable t) { plugin.getLogger().log(Level.SEVERE, "Unexpected exception in database thread:", t); } }; } if (isServerThread() || forceAsync) { future = executorService.submit(callable); if (plugin.isEnabled()) { //MoreFutures invokes the Bukkit Scheduler and since tasks cannot be //registered while the plugin is disabled we can only add a synchronous //callback when the plugin is enabled MoreFutures.addBukkitSyncCallback(plugin, future, callback); } else { //Just add a default callback as the plugin is disabled Futures.addCallback(future, callback); } } else { Throwable throwableThrown = null; R result = null; try { result = callable.call(); } catch (Exception e) { throwableThrown = e; } if (callback != null) { if (throwableThrown != null) { callback.onFailure(throwableThrown); } else { callback.onSuccess(result); } } } return future; }
From source file:com.vmware.photon.controller.api.client.resource.TenantsRestApi.java
/** * Returns a list of all projects defined for the specified tenant. * @param tenantId//from w ww . j av a2 s . com * @param responseCallback * @throws IOException */ @Override public void getProjectsAsync(final String tenantId, final FutureCallback<ResourceList<Project>> responseCallback) throws IOException { String path = String.format("%s/%s/projects", getBasePath(), tenantId); ResourceList<Project> projectResourceList = new ResourceList<>(); FutureCallback<ResourceList<Project>> callback = new FutureCallback<ResourceList<Project>>() { @Override public void onSuccess(@Nullable ResourceList<Project> result) { if (projectResourceList.getItems() == null) { projectResourceList.setItems(result.getItems()); } else { projectResourceList.getItems().addAll(result.getItems()); } if (result.getNextPageLink() != null && !result.getNextPageLink().isEmpty()) { try { getObjectByPathAsync(result.getNextPageLink(), this, new TypeReference<ResourceList<Project>>() { }); } catch (IOException e) { e.printStackTrace(); } } else { responseCallback.onSuccess(projectResourceList); } } @Override public void onFailure(Throwable t) { responseCallback.onFailure(t); } }; getObjectByPathAsync(path, callback, new TypeReference<ResourceList<Project>>() { }); }
From source file:com.vmware.photon.controller.clustermanager.statuschecks.KubernetesStatusChecker.java
@Override public void checkSlavesStatus(final String masterAddress, final List<String> slaveAddresses, final FutureCallback<Boolean> callback) { Preconditions.checkNotNull(masterAddress, "masterAddress cannot be null"); logger.info("Checking Kubernetes: {}", masterAddress); try {/*from w w w . j a v a 2 s. co m*/ String connectionString = createConnectionString(masterAddress); kubernetesClient.getNodeAddressesAsync(connectionString, new FutureCallback<Set<String>>() { @Override public void onSuccess(@Nullable Set<String> nodes) { if (!nodes.contains(masterAddress)) { logger.info("Node not registered with Kubernetes: {}", masterAddress); callback.onSuccess(false); return; } try { if (slaveAddresses == null || slaveAddresses.size() == 0) { // we are only checking the current master callback.onSuccess(true); } else { for (String slaveAddress : slaveAddresses) { if (!nodes.contains(slaveAddress)) { logger.info("Slave not registered with Kubernetes: {}", slaveAddress); callback.onSuccess(false); return; } } callback.onSuccess(true); } } catch (Exception e) { logger.warn("Failed to process Kubernetes nodes: ", e); callback.onFailure(e); } } @Override public void onFailure(Throwable t) { logger.warn("Kubernetes call failed: ", t); callback.onSuccess(false); } }); } catch (Exception e) { logger.warn("Kubernetes call failed: ", e); callback.onSuccess(false); } }
From source file:com.vmware.photon.controller.api.client.resource.TenantsApi.java
/** * List tenant by the given name.//from w w w .j a v a2 s . c o m * * @param name * @param responseCallback * @throws IOException */ public void listByNameAsync(final String name, final FutureCallback<ResourceList<Tenant>> responseCallback) throws IOException { String path = getBasePath(); if (name != null) { path += "?name=" + name; } ResourceList<Tenant> tenantResourceList = new ResourceList<>(); FutureCallback<ResourceList<Tenant>> callback = new FutureCallback<ResourceList<Tenant>>() { @Override public void onSuccess(@Nullable ResourceList<Tenant> result) { if (tenantResourceList.getItems() == null) { tenantResourceList.setItems(result.getItems()); } else { tenantResourceList.getItems().addAll(result.getItems()); } if (result.getNextPageLink() != null && !result.getNextPageLink().isEmpty()) { try { getObjectByPathAsync(result.getNextPageLink(), this, new TypeReference<ResourceList<Tenant>>() { }); } catch (IOException e) { e.printStackTrace(); } } else { responseCallback.onSuccess(tenantResourceList); } } @Override public void onFailure(Throwable t) { responseCallback.onFailure(t); } }; getObjectByPathAsync(path, callback, new TypeReference<ResourceList<Tenant>>() { }); }
From source file:com.vmware.photon.controller.client.resource.VmApi.java
/** * Get tasks associated with the specified vm. * @param vmId// www. j ava 2 s. c om * @param responseCallback * @throws IOException */ public void getTasksForVmAsync(final String vmId, final FutureCallback<ResourceList<Task>> responseCallback) throws IOException { String path = String.format("%s/%s/tasks", getBasePath(), vmId); ResourceList<Task> taskResourceList = new ResourceList<>(); FutureCallback<ResourceList<Task>> callback = new FutureCallback<ResourceList<Task>>() { @Override public void onSuccess(@Nullable ResourceList<Task> result) { if (taskResourceList.getItems() == null) { taskResourceList.setItems(result.getItems()); } else { taskResourceList.getItems().addAll(result.getItems()); } if (result.getNextPageLink() != null && !result.getNextPageLink().isEmpty()) { try { getObjectByPathAsync(result.getNextPageLink(), this, new TypeReference<ResourceList<Task>>() { }); } catch (IOException e) { e.printStackTrace(); } } else { responseCallback.onSuccess(taskResourceList); } } @Override public void onFailure(Throwable t) { responseCallback.onFailure(t); } }; getObjectByPathAsync(path, callback, new TypeReference<ResourceList<Task>>() { }); }
From source file:com.vmware.photon.controller.clustermanager.rolloutplans.BasicNodeRollout.java
private void waitForNodes(final Service service, final NodeRolloutInput input, final List<String> nodeAddresses, final FutureCallback<NodeRolloutResult> responseFutureCallback) { final Queue<Throwable> exceptions = new ConcurrentLinkedQueue<>(); final AtomicInteger latch = new AtomicInteger(input.nodeCount); for (int i = 0; i < input.nodeCount; i++) { FutureCallback<ClusterWaitTaskService.State> callback = new FutureCallback<ClusterWaitTaskService.State>() { @Override//from w w w. ja va 2 s .c o m public void onSuccess(@Nullable ClusterWaitTaskService.State result) { switch (result.taskState.stage) { case FINISHED: break; case CANCELLED: exceptions.add(new IllegalStateException( String.format("ClusterWaitTaskService was canceled. %s", result.documentSelfLink))); break; case FAILED: exceptions.add(new IllegalStateException( String.format("ClusterWaitTaskService failed with error %s. %s", result.taskState.failure.message, result.documentSelfLink))); break; } if (0 == latch.decrementAndGet()) { if (0 == exceptions.size()) { NodeRolloutResult rolloutResult = new NodeRolloutResult(); rolloutResult.nodeAddresses = nodeAddresses; responseFutureCallback.onSuccess(rolloutResult); } else { responseFutureCallback.onFailure(ExceptionUtils.createMultiException(exceptions)); } } } @Override public void onFailure(Throwable t) { exceptions.add(t); if (0 == latch.decrementAndGet()) { responseFutureCallback.onFailure(ExceptionUtils.createMultiException(exceptions)); } } }; ClusterWaitTaskService.State startState = new ClusterWaitTaskService.State(); startState.nodeType = input.nodeType; startState.serverAddress = nodeAddresses.get(i); TaskUtils.startTaskAsync(service, ClusterWaitTaskFactoryService.SELF_LINK, startState, (state) -> TaskUtils.finalTaskStages.contains(state.taskState.stage), ClusterWaitTaskService.State.class, ClusterManagerConstants.DEFAULT_TASK_POLL_DELAY, callback); } }
From source file:com.vmware.photon.controller.api.client.resource.TenantsRestApi.java
/** * List tenant by the given name./*w w w.j a va 2 s . com*/ * * @param name * @param responseCallback * @throws IOException */ @Override public void listByNameAsync(final String name, final FutureCallback<ResourceList<Tenant>> responseCallback) throws IOException { String path = getBasePath(); if (name != null) { path += "?name=" + name; } ResourceList<Tenant> tenantResourceList = new ResourceList<>(); FutureCallback<ResourceList<Tenant>> callback = new FutureCallback<ResourceList<Tenant>>() { @Override public void onSuccess(@Nullable ResourceList<Tenant> result) { if (tenantResourceList.getItems() == null) { tenantResourceList.setItems(result.getItems()); } else { tenantResourceList.getItems().addAll(result.getItems()); } if (result.getNextPageLink() != null && !result.getNextPageLink().isEmpty()) { try { getObjectByPathAsync(result.getNextPageLink(), this, new TypeReference<ResourceList<Tenant>>() { }); } catch (IOException e) { e.printStackTrace(); } } else { responseCallback.onSuccess(tenantResourceList); } } @Override public void onFailure(Throwable t) { responseCallback.onFailure(t); } }; getObjectByPathAsync(path, callback, new TypeReference<ResourceList<Tenant>>() { }); }
From source file:com.vmware.photon.controller.api.client.resource.ProjectApi.java
/** * Get tasks associated with the specified project. * * @param projectId/* w w w. j a va 2 s . com*/ * @param responseCallback * @throws IOException */ public void getTasksForProjectAsync(final String projectId, final FutureCallback<ResourceList<Task>> responseCallback) throws IOException { final String path = String.format("%s/%s/tasks", getBasePath(), projectId); ResourceList<Task> taskResourceList = new ResourceList<>(); FutureCallback<ResourceList<Task>> callback = new FutureCallback<ResourceList<Task>>() { @Override public void onSuccess(@Nullable ResourceList<Task> result) { if (taskResourceList.getItems() == null) { taskResourceList.setItems(result.getItems()); } else { taskResourceList.getItems().addAll(result.getItems()); } if (result.getNextPageLink() != null && !result.getNextPageLink().isEmpty()) { try { getObjectByPathAsync(result.getNextPageLink(), this, new TypeReference<ResourceList<Task>>() { }); } catch (IOException e) { e.printStackTrace(); } } else { responseCallback.onSuccess(taskResourceList); } } @Override public void onFailure(Throwable t) { responseCallback.onFailure(t); } }; getObjectByPathAsync(path, callback, new TypeReference<ResourceList<Task>>() { }); }
From source file:com.vmware.photon.controller.clustermanager.rolloutplans.BasicNodeRollout.java
private void provisionNodes(final Service service, final NodeRolloutInput input, final FutureCallback<NodeRolloutResult> responseFutureCallback) { final Queue<Throwable> exceptions = new ConcurrentLinkedQueue<>(); final Queue<String> nodeAddresses = new ConcurrentLinkedQueue<>(); final AtomicInteger latch = new AtomicInteger(input.nodeCount); for (int i = 0; i < input.nodeCount; i++) { FutureCallback<VmProvisionTaskService.State> callback = new FutureCallback<VmProvisionTaskService.State>() { @Override//from w w w .j av a 2s.c o m public void onSuccess(@Nullable VmProvisionTaskService.State result) { switch (result.taskState.stage) { case FINISHED: nodeAddresses.add(result.vmIpAddress); break; case CANCELLED: exceptions.add(new IllegalStateException( String.format("VmProvisionTaskService was canceled. %s", result.documentSelfLink))); break; case FAILED: exceptions.add(new IllegalStateException( String.format("VmProvisionTaskService failed with error %s. %s", result.taskState.failure.message, result.documentSelfLink))); break; } if (0 == latch.decrementAndGet()) { if (0 == exceptions.size()) { waitForNodes(service, input, new ArrayList<>(nodeAddresses), responseFutureCallback); } else { responseFutureCallback.onFailure(ExceptionUtils.createMultiException(exceptions)); } } } @Override public void onFailure(Throwable t) { exceptions.add(t); if (0 == latch.decrementAndGet()) { responseFutureCallback.onFailure(ExceptionUtils.createMultiException(exceptions)); } } }; NodeTemplate template = NodeTemplateFactory.createInstance(input.nodeType); String scriptDirectory = HostUtils.getScriptsDirectory(service); Map<String, String> nodeProperties = new HashMap<>(input.nodeProperties); nodeProperties.put(NodeTemplateUtils.NODE_INDEX_PROPERTY, Integer.toString(i)); nodeProperties.put(NodeTemplateUtils.HOST_ID_PROPERTY, UUID.randomUUID().toString()); VmProvisionTaskService.State startState = new VmProvisionTaskService.State(); startState.diskFlavorName = input.diskFlavorName; startState.imageId = input.imageId; startState.projectId = input.projectId; startState.vmFlavorName = input.vmFlavorName; startState.vmNetworkId = input.vmNetworkId; startState.vmTags = ClusterUtil.createClusterTags(input.clusterId, input.nodeType); startState.vmName = template.getVmName(nodeProperties); startState.userData = template.createUserDataTemplate(scriptDirectory, nodeProperties); startState.metaData = template.createMetaDataTemplate(scriptDirectory, nodeProperties); TaskUtils.startTaskAsync(service, VmProvisionTaskFactoryService.SELF_LINK, startState, (state) -> TaskUtils.finalTaskStages.contains(state.taskState.stage), VmProvisionTaskService.State.class, ClusterManagerConstants.DEFAULT_TASK_POLL_DELAY, callback); } }