Exemple #1
0
    def run(self, cmd, opts, *backups):
        error = 0

        if not backups:
            LOG.info("No backupsets specified - using backupsets from %s",
                     hollandcfg.filename)
            backups = hollandcfg.lookup('holland.backupsets')

        if not backups:
            LOG.warn("Nothing to purge")
            return 0

        if not opts.force:
            LOG.warn(
                "Running in dry-run mode.  Use --execute to do a real purge.")

        for name in backups:
            if '/' not in name:
                backupset = spool.find_backupset(name)
                if not backupset:
                    LOG.error("Failed to find backupset '%s'", name)
                    error = 1
                    continue
                purge_backupset(backupset, opts.force, opts.all)
            else:
                backup = spool.find_backup(name)
                if not backup:
                    LOG.error("Failed to find single backup '%s'", name)
                    error = 1
                    continue
                purge_backup(backup, opts.force)
                if opts.force:
                    spool.find_backupset(backup.backupset).update_symlinks()
        return error
Exemple #2
0
    def run(self, cmd, opts, *backups):
        error = 0

        if not backups:
            LOG.info("No backupsets specified - using backupsets from %s",
                     hollandcfg.filename)
            backups = hollandcfg.lookup('holland.backupsets')

        if not backups:
            LOG.warn("Nothing to purge")
            return 0

        if not opts.force:
            LOG.warn("Running in dry-run mode.  Use --execute to do a real purge.")

        for name in backups:
            if '/' not in name:
                backupset = spool.find_backupset(name)
                if not backupset:
                    LOG.error("Failed to find backupset '%s'", name)
                    error = 1
                    continue
                purge_backupset(backupset, opts.force, opts.all)
            else:
                backup = spool.find_backup(name)
                if not backup:
                    LOG.error("Failed to find single backup '%s'", name)
                    error = 1
                    continue
                purge_backup(backup, opts.force)
                if opts.force:
                    spool.find_backupset(backup.backupset).update_symlinks()
        return error
Exemple #3
0
 def run(self, cmd, opts, backup_name, *restore_options):
     backup = spool.find_backup(backup_name)
     if not backup:
         logging.error("No backup found named %s", backup_name)
         return 1
     config = backup.config
     plugin_name = config.get('holland:backup', {}).get('plugin')
     plugin = load_first_entrypoint('holland.restore', plugin_name)(backup)
     plugin.dispatch([plugin_name]  + list(restore_options))
     return 1
Exemple #4
0
    def run(self, cmd, opts, *backups):
        if not backups:
            self._purge_all(opts)
        else:
            bks = []
            for backup in backups:
                bk = spool.find_backup(backup)
                if bk is None:
                    print >>sys.stderr, "Did not find backup called %s" % \
                                         backup
                else:
                    print "Found backup: %s\n" % bk
                    bks.append(bk)
            
            if not bks:
                return 1

            if opts.dry_run:
                for bk in bks:
                    print "[Dry-run] Purging %s [%s]" % (bk, bk.path)
                return 0
            else:
                if not opts.force:
                    print "The following backups will be purged:\n"
                    for bk in bks:
                        print "%s\n" % bk
                    print "This will completely destroy data locally " + \
                          "on this server.\n"
                    confirm = raw_input("Are you sure you want to do " + \
                                        "this? [N/y] ")
                    if confirm.lower() not in ['y', "yes", "ya", "yea",
                                               "hell yea"]:
                        return 1

                    print ""

                for bk in bks:
                    print "Purging %s\n" % bk
                    bk.purge()