généralement, la pagination est effectuée par le client demandeur de l'API. Pour faire cela dans boto, vous devrez couper vos systèmes. Par exemple, disons que vous appelez AWS via boto, en utilisant le paramètre get_all_instances def; vous devrez les stocker d'une manière ou d'une autre et ensuite suivre les serveurs qui ont été affichés et ceux qui ne l'ont pas été. À ma connaissance, boto n'a pas la fonctionnalité LIMIT que la plupart des développeurs utilisent depuis MySQL. Personnellement, je scanne toutes mes instances et les planque dans mongo comme ceci:
for r in conn.get_all_instances(): # loop through all reservations
groups = [g.name for g in r.groups] # get a list of groups for this reservation
for x in r.instances: # loop through all instances with-in reservation
groups = ','.join(groups) # join the groups into a comma separated list
name = x.tags.get('Name',''); # get instance name from the 'Name' tag
new_record = { "tagname":name, "ip_address":x.private_ip_address,
"external_ip_nat":x.ip_address, "type":x.instance_type,
"state":x.state, "base_image":x.image_id, "placement":x.placement,
"public_ec2_dns":x.public_dns_name,
"launch_time":x.launch_time, "parent": ObjectId(account['_id'])}
new_record['groups'] = groups
systems_coll.update({'_id':x.id},{"$set":new_record},upsert=True)
error = db.error()
if error != None:
print "err:%s:" % str(error)
Vous pouvez également envelopper ces derniers dans des blocs try/catch. Dépend de vous. Une fois que vous les sortir de boto, devrait être trivial pour faire le travail de découpe.
- Jess
une aide s'il vous plaît? –