Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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