code: def get_tagged(self, tags):
          
          # if tags is a simple string, make it a list (note: tuples like
          # ('mongos', 2) must be in a surrounding list)
          if not hasattr(tags, '__iter__') and type(tags) == str:
              tags = [tags]
  
          nodes = set(self.cluster_tags['all'])
  
          for tag in tags:
              if re.match(r"\w+ \d{1,2}", tag):
                  # special case for tuple tags: mongos, config, shard,
                  # secondary. These can contain a number
                  tag, number = tag.split()
  
                  try:
                      branch = self.cluster_tree[tag][int(number) - 1]
                  except (IndexError, KeyError):
                      continue
  
                  if hasattr(branch, '__iter__'):
                      subset = set(branch)
                  else:
                      subset = set([branch])
              else:
                  # otherwise use tags dict to get the subset
                  subset = set(self.cluster_tags[tag])
  
              nodes = nodes.intersection(subset)
  
          return nodes
docs: Tag format.
  
          The format for the tags list is tuples for tags: mongos, config, shard,
          secondary tags of the form (tag, number), e.g. ('mongos', 2) which
          references the second mongos in the list. For all other tags, it is
          simply the string, e.g. 'primary'.