class_docstr: A class to manage kafka cluster metadata.
  
  This class does not perform any IO. It simply updates internal state
  given API responses (MetadataResponse, GroupCoordinatorResponse).
  
  Keyword Arguments:
      retry_backoff_ms (int): Milliseconds to backoff when retrying on
          errors. Default: 100.
      metadata_max_age_ms (int): The period of time in milliseconds after
          which we force a refresh of metadata even if we haven't seen any
          partition leadership changes to proactively discover any new
          brokers or partitions. Default: 300000
      bootstrap_servers: 'host[:port]' string (or list of 'host[:port]'
          strings) that the client should contact to bootstrap initial
          cluster metadata. This does not have to be the full node list.
          It just needs to have at least one broker that will respond to a
          Metadata API Request. Default port is 9092. If no servers are
          specified, will default to localhost:9092.
class_docstr_tok: ["A","class","to","manage","kafka","cluster","metadata",".","This","class","does","not","perform","any","IO",".","It","simply","updates","internal","state","given","API","responses","(","MetadataResponse",",","GroupCoordinatorResponse",")",".","Keyword","Arguments",":","retry_backoff_ms","(","int",")",":","Milliseconds","to","backoff","when","retrying","on","errors",".","Default",":","100.","metadata_max_age_ms","(","int",")",":","The","period","of","time","in","milliseconds","after","which","we","force","a","refresh","of","metadata","even","if","we","have","n't","seen","any","partition","leadership","changes","to","proactively","discover","any","new","brokers","or","partitions",".","Default",":","300000","bootstrap_servers",":","'host","[",":","port","]","'","string","(","or","list","of","'host","[",":","port","]","'","strings",")","that","the","client","should","contact","to","bootstrap","initial","cluster","metadata",".","This","does","not","have","to","be","the","full","node","list",".","It","just","needs","to","have","at","least","one","broker","that","will","respond","to","a","Metadata","API","Request",".","Default","port","is","9092",".","If","no","servers","are","specified",",","will","default","to","localhost:9092","."]
docstr: Return node_id of group coordinator.
  
  Arguments:
      group (str): name of consumer group
  
  Returns:
      int: node_id for group coordinator
      None if the group does not exist.
docstr_tok: ["Return","node_id","of","group","coordinator",".","Arguments",":","group","(","str",")",":","name","of","consumer","group","Returns",":","int",":","node_id","for","group","coordinator","None","if","the","group","does","not","exist","."]
code: def coordinator_for_group(self, group):
      """Return node_id of group coordinator.
  
      Arguments:
          group (str): name of consumer group
  
      Returns:
          int: node_id for group coordinator
          None if the group does not exist.
      """
      return self._groups.get(group)
  
imports: from __future__ import absolute_import
  import collections
  import copy
  import logging
  import threading
  import time
  from kafka.vendor import six
  from kafka import errors
  from kafka.conn import collect_hosts
  from kafka.future import Future
  from kafka.structs import BrokerMetadata, PartitionMetadata, TopicPartition
label_desc: Use image node_id 10 for calling the ClusterMetadata obj's underlying member method code with example usage: obj.coordinator_for_group(group) and returns: self