def inventory(argOption=None, argLocation=None, argVault=None, argRegion=None, argConfigFile=None): if argLocation is None: argLocation = 'ALL' argOption = str.upper(argOption) print "### %s INVENTORY for '%s' location(s)" % (argOption, argLocation) config = Config(argConfigFile) locations = config.getLocations() for location, locationConfig in locations.iteritems(): if argLocation != 'ALL' and location != argLocation: continue # SKIP if argRegion is not None and argRegion != locationConfig['region']: continue # SKIP if argVault is not None and argVault != locationConfig['vault']: continue # SKIP print "Processing %s" % location glacierJob = GlacierJob( locationConfig['region'], locationConfig['vault'], awsCredentials = config.getAWScredentials()) if 'SHOW' == argOption: glacierJob.showInventory() else: glacierJob.requestInventory()
def jobs(argLocation=None, argVault=None, argRegion=None, argConfigFile=None): # vault.checkJobs() config = Config(argConfigFile) locations = config.getLocations() for location, locationConfig in locations.iteritems(): if argLocation is not None and location != argLocation: continue # SKIP if argRegion is not None and argRegion != locationConfig['region']: continue # SKIP if argVault is not None and argVault != locationConfig['vault']: continue # SKIP print "Processing %s" % location glacierJob = GlacierJob( locationConfig['region'], locationConfig['vault'], awsCredentials = config.getAWScredentials()) glacierJob.checkJobs()
def sync(argLocation=None, argVault=None, argRegion=None, argConfigFile=None): config = Config(argConfigFile) locations = config.getLocations() for location, locationConfig in locations.iteritems(): if argLocation is not None and location != argLocation: continue # SKIP if argRegion is not None and argRegion != locationConfig['region']: continue # SKIP if argVault is not None and argVault != locationConfig['vault']: continue # SKIP print "Processing %s" % location vault = GlacierVault( locationConfig['region'], locationConfig['vault'], awsCredentials = config.getAWScredentials(), partSize = config.getAWSPartSize()) for archiveFilename in os.listdir(location): filePath = os.path.join(location, archiveFilename) if os.path.isdir(filePath): # skip directories continue attempts = 5 startTime = datetime.datetime.now() while attempts > 0: try: vault.uploadArchive(location, archiveFilename) break except Exception: timediff = datetime.datetime.now() - startTime print "### DEBUG: Timediff %d seconds" % timediff.total_seconds() if timediff.total_seconds() > 60: print "### DEBUG: reset attempts" attempts = 5 attempts -= 1 print "Exception happened, repeat (%d attempts left)" % attempts time.sleep(5) # delays for 5 seconds