def backup(email, password, path): heroku = Client(email, password) path = Path(path) if not path.exists(): path.mkdir() for clip in heroku.get_all_dataclips(): slug = clip['slug'] print(clip['name']) destination_dir = path / slug destination_dir.mkdir() with (destination_dir / 'clip.json').open('w') as output_file: json.dump(clip, output_file) for version in heroku.get_dataclip_versions(slug): print(version['version_number']) version_dir = destination_dir / str(version['version_number']) version_dir.mkdir() with (version_dir / 'clip.json').open('w') as output_file: json.dump(version, output_file) with (version_dir / 'clip.sql').open('w') as output_file: output_file.write(version['sql'])
def move_all(email, password, source_resource, destination_resource): heroku = Client(email, password) resources = { resource['resource_name']: resource['id'] for resource in heroku.get_heroku_resources() } if source_resource not in resources: raise Exception('`source_resource` not a heroku resource') if destination_resource not in resources: raise Exception('`destination_resource` not a heroku resource') source_dataclips_slugs = [ dataclip['slug'] for dataclip in heroku.get_all_dataclips() if dataclip['heroku_id'] == resources[source_resource] ] for source_dataclip_slug in source_dataclips_slugs: heroku.move_to_resource(source_dataclip_slug, resources[destination_resource])
def move_all(email, password, source_resource, destination_resource): heroku = Client(email, password) resources = { resource['resource_name']: resource['id'] for resource in heroku.get_heroku_resources() } if source_resource not in resources: raise Exception('`source_resource` not a heroku resource') if destination_resource not in resources: raise Exception('`destination_resource` not a heroku resource') source_dataclips_slugs = [ dataclip['slug'] for dataclip in heroku.get_all_dataclips() if dataclip['heroku_resource_id'] == resources[source_resource] ] for source_dataclip_slug in source_dataclips_slugs: heroku.move_to_resource(source_dataclip_slug, resources[destination_resource])