Paging and iteration ==================== Overview -------- Most provider services have list() methods, and all list methods accept a limit parameter which specifies the maximum number of results to return. If a limit is not specified, CloudBridge will default to the global configuration variable `default_result_limit`, which can be modified through the provider config. Since the returned result list may have more records available, CloudBridge will always return a :py:class:`ResultList` object to assist with paging through additional results. A ResultList extends the standard :py:class:`list` and the following example illustrates how to fetch additional records. Example: .. code-block:: python # get first page of results rl = provider.compute.instances.list(limit=50) for result in rl: print("Instance Data: {0}", result) if rl.supports_total: print("Total results: {0}".format(rl.total_results)) else: print("Total records unknown," "but has more data?: {0}."format(rl.is_truncated)) # Page to next set of results if (rl.is_truncated) rl = provider.compute.instances.list(limit=100, marker=rl.marker) To ease development, CloudBridge also provides standard Python iterators that will page the results in for you automatically. Therefore, when you need to iterate through all available objects, the following shorthand is recommended: Example: .. code-block:: python # Iterate through all results for instance in provider.compute.instances: print("Instance Data: {0}", instance)