anchor.diff:      F = build_nodes_info_fun(true, normal, "127.0.0.1"),
       [F(N, undefined) || N <- ns_node_disco:nodes_wanted()].
   
  +%% builds health/warmup status of given node (w.r.t. given Bucket if
  +%% not undefined)
  +build_node_status(Node, Bucket, InfoNode, BucketsAll) ->
  +    case proplists:get_bool(down, InfoNode) of
  +        false ->
  +            ReadyBuckets = proplists:get_value(ready_buckets, InfoNode),
  +            NodeBucketNames = ns_bucket:node_bucket_names(Node, BucketsAll),
  +            case Bucket of
  +                undefined ->
  +                    case ordsets:is_subset(lists:sort(NodeBucketNames),
  +                                           lists:sort(ReadyBuckets)) of
  +                        true ->
  +                            <<"healthy">>;
  +                        false ->
  +                            <<"warmup">>
  +                    end;
  +                _ ->
  +                    case lists:member(Bucket, ReadyBuckets) of
  +                        true ->
  +                            <<"healthy">>;
  +                        false ->
  +                            case lists:member(Bucket, NodeBucketNames) of
  +                                true ->
  +                                    <<"warmup">>;
  +                                false ->
  +                                    <<"unhealthy">>
  +                            end
  +                    end
  +            end;
  +        true ->
  +            <<"unhealthy">>
  +    end.
  +
   build_nodes_info_fun(IncludeOtp, InfoLevel, LocalAddr) ->
       OtpCookie = list_to_binary(atom_to_list(ns_node_disco:cookie_get())),
       NodeStatuses = ns_doctor:get_nodes(),
       Config = ns_config:get(),
  -    BucketNames = ns_bucket:get_bucket_names(),
  -    BucketsAll = case InfoLevel of
  -                     stable -> undefined;
  -                     normal -> ns_bucket:get_buckets(Config)
  -                 end,
  +    BucketsAll = ns_bucket:get_buckets(Config),
       fun(WantENode, Bucket) ->
               InfoNode = case dict:find(WantENode, NodeStatuses) of
                              {ok, Info} -> Info;
  
positive.code:                                                       KV3)
                    end,
              {struct, KV4}
      end.
  
  
  is_warming_up(Node, Names) ->
      case lists:all(fun(X) -> ns_memcached:connected(Node, X) end, Names) of
          true  -> <<"healthy">>;
          false -> <<"warmup">>
      end.
  
  
  
negative.code:                        end,
              KV = build_node_info(Config, WantENode, InfoNode, LocalAddr),
  
              Status = build_node_status(WantENode, Bucket, InfoNode, BucketsAll),
              KV1 = [{clusterMembership,
                      atom_to_binary(
                        ns_cluster_membership:get_cluster_membership(
  