def get_servers(self, populate=False, tags_has_one=None, tags_has_all=None):
if tags_has_all and tags_has_one:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT>request = '<STR_LIT>'<EOL>if tags_has_all:<EOL><INDENT>tags_has_all = [str(tag) for tag in tags_has_all]<EOL>taglist = '<STR_LIT::>'.join(tags_has_all)<EOL>request = '<STR_LIT>'.format(taglist)<EOL><DEDENT>if tags_has_one:<EOL><INDENT>tags_has_one = [str(tag) for tag in tags_has_one]<EOL>taglist = '<STR_LIT:U+002C>'.join(tags_has_one)<EOL>request = '<STR_LIT>'.format(taglist)<EOL><DEDENT>servers = self.get_request(request)['<STR_LIT>']['<STR_LIT>']<EOL>server_list = list()<EOL>for server in servers:<EOL><INDENT>server_list.append(Server(server, cloud_manager=self))<EOL><DEDENT>if populate:<EOL><INDENT>for server_instance in server_list:<EOL><INDENT>server_instance.populate()<EOL><DEDENT><DEDENT>return server_list<EOL>
Return a list of (populated or unpopulated) Server instances.

- populate = False (default) => 1 API request, returns unpopulated Server instances.
- populate = True => Does 1 + n API requests (n = # of servers),
                     returns populated Server instances.

New in 0.3.0: the list can be filtered with tags:
- tags_has_one: list of Tag objects or strings
  returns servers that have at least one of the given tags

- tags_has_all: list of Tag objects or strings
  returns servers that have all of the tags