Example usage for com.google.common.util.concurrent FutureCallback onFailure

List of usage examples for com.google.common.util.concurrent FutureCallback onFailure

Introduction

In this page you can find the example usage for com.google.common.util.concurrent FutureCallback onFailure.

Prototype

void onFailure(Throwable t);

Source Link

Document

Invoked when a Future computation fails or is canceled.

Usage

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);
    }
}