Skip to content

Instantly share code, notes, and snippets.

@weldpua2008
Created August 15, 2018 04:46
Show Gist options
  • Select an option

  • Save weldpua2008/75943f6b6959e3686d993126f42db0c6 to your computer and use it in GitHub Desktop.

Select an option

Save weldpua2008/75943f6b6959e3686d993126f42db0c6 to your computer and use it in GitHub Desktop.
Create a snapshot at DigitalOcean from Droplet
#!/usr/bin/env python
API_KEY = ''
import argparse
import sys
from dopy.manager import DoManager
if sys.version < '3':
integer_types = (int, long,)
else:
integer_types = (int,)
def make_snapshot(do, do_id, snapshot_name):
if isinstance(do_id, integer_types) or isinstance(do_id, float):
status = do.snapshot_droplet(do_id, snapshot_name)
return status
else:
for dr in do.request('/droplets/')['droplets']:
if dr['name'] == do_id:
status = do.snapshot_droplet(dr['id'], snapshot_name.lower())
return status
break
elif dr['name'].lower() == do_id.lower():
status = do.snapshot_droplet(dr['id'], snapshot_name.lower())
return status
break
elif str(dr['id']) == str(do_id):
status = do.snapshot_droplet(dr['id'], snapshot_name.lower())
return status
break
raise ValueError("Failed create a snapshot")
if __name__ == '__main__':
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-n', '--dropletname', action="store", help="Droplet name", required=True)
parser.add_argument('-s', '--snapshotname', action="store", help="Snapshot", required=True)
args = parser.parse_args()
try:
do = DoManager(None, API_KEY, api_version=2)
print make_snapshot(do, args.dropletname, args.snapshotname)
except Exception as e:
print("Error: %s" % e)
sys.exit(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment