code: def list_servers(self, nicknames=None):
          
          if not nicknames:
              return self.list_all_servers()
  
          if isinstance(nicknames, six.string_types):
              nicknames = [nicknames]
  
          sd_list = []
          sd_nick_list = []
          for nickname in nicknames:
              if nickname in self._servers:
                  sd_list.append(self.get_server(nickname))
              elif nickname in self._server_groups:
                  for item_nick in self._server_groups[nickname]:
                      for sd in self.list_servers(item_nick):
                          if sd.nickname not in sd_nick_list:
                              sd_nick_list.append(sd.nickname)
                              sd_list.append(sd)
              else:
                  raise ValueError(
                      "Server group or server nickname {0!r} not found in WBEM "
                      "server definition file {1!r}".
                      format(nickname, self._filepath))
          return sd_list
docs: Iterate through the servers of the server group with the specified
          nicknames, or the single server with the specified nickname, and yield
          a `ServerDefinition` object for each server.
  
          nicknames may be: None, string defining a nickname or list of nicknames