Skip to content

Instantly share code, notes, and snippets.

@weldpua2008
Created August 15, 2018 04:52
Show Gist options
  • Save weldpua2008/43f331d0f41e85fcc29cd9a8c3dda404 to your computer and use it in GitHub Desktop.
Save weldpua2008/43f331d0f41e85fcc29cd9a8c3dda404 to your computer and use it in GitHub Desktop.
Get ID for DigitalOcean Snapshot by his name(recent) or return default
#!/usr/bin/env python
API_KEY = ''
DEFAULT_SNAPSHOT_ID = "centos-6-x64"
import argparse
import sys
from dopy.manager import DoManager
def get_snapshot(do, snapshot_name):
list_snapshots = do.request('/snapshots')
snapshots = []
for sn in list_snapshots['snapshots']:
if 'name' in sn:
if sn['name'] == snapshot_name:
snapshots.append(sn)
elif sn['name'].lower() == snapshot_name.lower():
snapshots.append(sn)
# else:
# snapshots.append(sn)
return snapshots
if __name__ == '__main__':
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-s', '--snapshotname', action="store", help="Snapshot", required=True)
parser.add_argument('-d', '--defaultsnapshot', action="store", help="Default Snapshot ID",default=DEFAULT_SNAPSHOT_ID)
args = parser.parse_args()
DEFAULT_SNAPSHOT_ID = args.defaultsnapshot
try:
do = DoManager(None, API_KEY, api_version=2)
sn_raw = get_snapshot(do, args.snapshotname)
sn_raw.sort(key=lambda item:item['created_at'], reverse=True)
try:
print sn_raw[0]['id']
except (KeyError,IndexError) as e:
print(DEFAULT_SNAPSHOT_ID)
sys.exit(0)
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