private ManagedThreadPoolExecutor getOrCreateTopologyTaskExecutor(Long clusterId) {
    ManagedThreadPoolExecutor topologyTaskExecutor = this.topologyTaskExecutorServiceMap.get(clusterId);
    if (topologyTaskExecutor == null) {
      LOG.info("Creating TopologyTaskExecutorService for clusterId: {}", clusterId);

      topologyTaskExecutor = new ManagedThreadPoolExecutor(topologyTaskExecutorThreadPoolSize,
              topologyTaskExecutorThreadPoolSize, 0L, TimeUnit.MILLISECONDS,
              new LinkedBlockingQueue<Runnable>());
      topologyTaskExecutorServiceMap.put(clusterId, topologyTaskExecutor);
    }
    return topologyTaskExecutor;
  }
Gets a map of components keyed by host which have operations in the
{@link HostRoleStatus#PENDING} state. This could either be because hosts
have not registered or becuase the operations are actually waiting to be
queued.

@return a mapping of host with pending components.
ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java