code: private void deployInstance(final InstanceContext instance, final CountingCompletionHandler<Void> counter) {
      // First we need to select a node from the component's deployment group
      // to which to deploy the component.
      // If the component doesn't specify a group then deploy to any node in the cluster.
      if (instance.component().group() != null) {
        cluster.getGroup(instance.component().group(), new Handler<AsyncResult<Group>>() {
          @Override
          public void handle(AsyncResult<Group> result) {
            if (result.failed()) {
              counter.fail(result.cause());
            } else {
              result.result().selectNode(instance.address(), new Handler<AsyncResult<Node>>() {
                @Override
                public void handle(AsyncResult<Node> result) {
                  if (result.failed()) {
                    counter.fail(result.cause());
                  } else {
                    deployInstance(result.result(), instance, counter);
                  }
                }
              });
            }
          }
        });
      } else {
        cluster.selectNode(instance.address(), new Handler<AsyncResult<Node>>() {
          @Override
          public void handle(AsyncResult<Node> result) {
            if (result.failed()) {
              counter.fail(result.cause());
            } else {
              deployInstance(result.result(), instance, counter);
            }
          }
        });
      }
    }
docs: Deploys a single component instance.