#!/usr/bin/python

import errno
import time

import isi.fs.drive_purposing as drive_purposing

MAX_RETRIES = 10

def main():
    retries = 0
    while True:
        db = drive_purposing.DrivePurposeDB()

        if not db.fully_upgraded():
            db.upgrade_to_current()
            try:
                db.write()
                break
            except (IOError, OSError), e:
                if (e.errno not in (errno.ESTALE, errno.ENOTDIR) or retries >=
                        MAX_RETRIES):
                    raise
        else:
            break
        retries += 1
        time.sleep(1)

if __name__ == '__main__':
    main()

