Skip to content
This repository was archived by the owner on Apr 15, 2024. It is now read-only.
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
[snapshot] add restore function
  • Loading branch information
Jean-Baptiste Besselat
Jean-Baptiste Besselat committed Sep 24, 2019
commit 0b1118b0e470f55249b43c61f3cce1c2a43e5dff
36 changes: 32 additions & 4 deletions consul/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -2451,17 +2451,45 @@ class Snapshot(object):
def __init__(self, agent):
self.agent = agent

def get(self):
def get(self, dc=None, token=None):
"""
Returns gzipped snapshot of current consul cluster
"""
params = []
token = token or self.agent.token
if token:
params.append(('token', token))
if dc:
params.append(('dc', dc))
return self.agent.http.get(
CB.binary(), '/v1/snapshot')
CB.binary(), '/v1/snapshot', params=params)

def save(self, file_path):
def save(self, file_path, dc=None, token=None):
"""
Backup snapshot in a file
"""
backup_file = open(file_path, 'w+b')
backup_file.write(self.get())
backup_file.write(self.get(dc, token))
backup_file.close()

def restore(self, file_path=None, data=None, dc=None, token=None):
"""
Restore snapshot from a file or from data
"""
if file_path or data:
if file_path:
backup_file = open(file_path, 'rb')
data = backup_file.read()
backup_file.close()
params = []
token = token or self.agent.token
if token:
params.append(('token', token))
if dc:
params.append(('dc', dc))
res = self.agent.http.put(CB.bool(), '/v1/snapshot',
params=params,
data=data)
return res
else:
return False