def main(): # Generate the latest autocompletion indices from # boto3. You'll need to do this if you pull in # a new boto3 version that has updated resource models. import sys import json import os import boto3.session data_dir = os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'data') if not os.path.isdir(data_dir): os.makedirs(data_dir) session = boto3.session.Session() loader = session._loader builder = ResourceIndexBuilder() for resource_name in session.get_available_resources(): api_version = loader.determine_latest_version( resource_name, 'resources-1') model = loader.load_service_model(resource_name, 'resources-1', api_version) index = builder.build_index(model) output_file = os.path.join(data_dir, resource_name, api_version, 'completions-1.json') if not os.path.isdir(os.path.dirname(output_file)): os.makedirs(os.path.dirname(output_file)) with open(output_file, 'w') as f: f.write(json.dumps(index, indent=2))
def all_collections(): # This generator yields every collection on every available resource, # except those which have been blocklisted. session = boto3.session.Session() for service_name in session.get_available_resources(): resource = session.resource( service_name, region_name=REGION_MAP.get(service_name, 'us-west-2')) for key in dir(resource): if key in BLOCKLIST.get(service_name, []): continue value = getattr(resource, key) if isinstance(value, CollectionManager): yield value
def test_all_collections(): # This generator yields test functions for every collection # on every available resource, except those which have # been blacklisted. session = boto3.session.Session() for service_name in session.get_available_resources(): resource = session.resource( service_name, region_name=REGION_MAP.get(service_name, 'us-west-2')) for key in dir(resource): if key in BLACKLIST.get(service_name, []): continue value = getattr(resource, key) if isinstance(value, CollectionManager): yield _test_collection, service_name, key, value