protected Object doExecute()

in commands/src/main/java/org/jclouds/karaf/commands/compute/NodeListCommand.java [40:98]


  protected Object doExecute() throws Exception {
    ComputeService service = null;
    try {
      service = getComputeService();
    } catch (Throwable t) {
      System.err.println(t.getMessage());
      t.printStackTrace(System.err);
      return null;
    }

    Set<? extends NodeMetadata> nodes = service.listNodesDetailsMatching(new Predicate<ComputeMetadata>() {
      @Override
      public boolean apply(@Nullable ComputeMetadata input) {
        NodeMetadata node = (NodeMetadata) input;
        if (!Strings.isNullOrEmpty(group) && !group.equals(node.getGroup())) {
          return false;
        }
        return true;
      }
    });
    printNodes(service, nodes, System.out);

    for (ComputeMetadata node : service.listNodes()) {

      // Update Caches
      if (node instanceof NodeMetadata) {
        NodeMetadata metadata = (NodeMetadata) node;
        for (String cacheKey : ServiceHelper.findCacheKeysForService(service)) {
          if (metadata.getStatus().equals(NodeMetadata.Status.RUNNING)) {
            cacheProvider.getProviderCacheForType(Constants.ACTIVE_NODE_CACHE).put(
                    cacheKey, node.getId());
            cacheProvider.getProviderCacheForType(Constants.INACTIVE_NODE_CACHE).remove(
                    cacheKey, node.getId());
            cacheProvider.getProviderCacheForType(Constants.SUSPENDED_NODE_CACHE).remove(
                    cacheKey, node.getId());
          } else if (metadata.getStatus().equals(NodeMetadata.Status.SUSPENDED)) {
            cacheProvider.getProviderCacheForType(Constants.ACTIVE_NODE_CACHE).remove(
                    cacheKey, node.getId());
            cacheProvider.getProviderCacheForType(Constants.INACTIVE_NODE_CACHE).put(
                    cacheKey, node.getId());
            cacheProvider.getProviderCacheForType(Constants.SUSPENDED_NODE_CACHE).put(
                    cacheKey, node.getId());
          } else if (metadata.getStatus().equals(NodeMetadata.Status.TERMINATED)) {
            cacheProvider.getProviderCacheForType(Constants.ACTIVE_NODE_CACHE).remove(
                    cacheKey, node.getId());
            cacheProvider.getProviderCacheForType(Constants.INACTIVE_NODE_CACHE).remove(
                    cacheKey, node.getId());
            cacheProvider.getProviderCacheForType(Constants.SUSPENDED_NODE_CACHE).remove(
                    cacheKey, node.getId());
          } else {
            cacheProvider.getProviderCacheForType(Constants.ACTIVE_NODE_CACHE).remove(
                    cacheKey, node.getId());
          }
        }
      }
    }

    return null;
  }