Skip to content

Instantly share code, notes, and snippets.

@shamsway
Last active May 1, 2020 17:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shamsway/b7a32d518264f5e79af5602e8c401d88 to your computer and use it in GitHub Desktop.
Save shamsway/b7a32d518264f5e79af5602e8c401d88 to your computer and use it in GitHub Desktop.
Copy oxidized network config backups to a managed volume
import rubrik_cdm
import urllib3
import os
import shutil
import logging
urllib3.disable_warnings()
rubrik = rubrik_cdm.Connect()
mvname = 'network-backups'
networkconfigs = '/etc/oxidized/configs'
backupdir = '/mnt/network-backups'
logfile = backupdir + '/network-backups.log'
logfile = '/tmp/network-backups.log'
begin_snapshot = rubrik.begin_managed_volume_snapshot(mvname)
# logging config
logging.basicConfig(filename=logfile, filemode='w', format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %H:%M:%S', level=logging.INFO)
logger = logging.getLogger(__name__)
# console handler
console = logging.StreamHandler()
console.setLevel(logging.INFO)
logging.getLogger("").addHandler(console)
logger.info('Managed Volume `{}` mounted at {} unlocked'.format(mvname, backupdir))
src_files = os.listdir(networkconfigs)
for file_name in src_files:
full_file_name = os.path.join(networkconfigs, file_name)
if os.path.isfile(full_file_name):
logger.info('Copying {} to {}'.format(full_file_name, backupdir))
try:
shutil.copy(full_file_name, backupdir)
except:
logging.error('Error copying {}'.format(full_file_name))
shutil.copy(logfile, backupdir)
logger.info('Copy complete')
end_snapshot = rubrik.end_managed_volume_snapshot(mvname)
logger.info('Managed Volume `{}` locked'.format(mvname))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment