Пример #1
0
def get_version(dir, v):
    try:
        sys.path.append("%s/.." % dir)
        sys.path.append("%s/" % dir)
	sys.path.reverse()
	if v == "old":
	    os.environ['DJANGO_SETTINGS_MODULE'] = 'mx30_backup.settings'
            from mx30_backup.pmx.pmx import get_version
	else:
	    os.environ['DJANGO_SETTINGS_MODULE'] = 'mx30.settings'
            from mx30.pmx.pmx import get_version
    except:
        sys.exit("Could not get the mx30 version")
    return get_version()
Пример #2
0
def update(old, new, options):
    print "Starting update..."
    print "Backing up the data..."
    try:
        os.chdir('%s/mx30' % old)
        dt = datetime.datetime.now()
        exec_string = "python manage.pyc dumpdata --indent=4 --format=xml > backups/update_%s_%s_%s.aupaace.xml" % (dt.month, dt.day, dt.year)
        os.system(exec_string)
    except:
        sys.exit("Failed to backup the data.")
    print "Your data was backed up."
    print "Updating your version..."
    try:
        print "Copying the new version..."
        shutil.rmtree("%s/mx30_backup" % old)
        os.renames("%s/mx30" % old, "%s/mx30_backup" % old)
        shutil.copytree("%s/mx30" % new, "%s/mx30" % old)
        print "Configuring settings..."
        os.chdir("%s/mx30" % old)
        edit_settings(options, old)
        file = open ("%s/mx30_backup/settings.py" % old, "r")
        line = file.readline()
        while line and line.find('DATABASE_NAME') == -1:
            line = file.readline()
        db = line.split("'")[1]
        file.close()
        file = open ("%s/mx30_backup/settings.py" % old, "r")
        line = file.readline()
        while line and line.find('MEDIA_ROOT') == -1:
            line = file.readline()
        media_dir = line.split("'")[1]
        file.close()
        file = open ("%s/mx30/settings.py" % old, "r")
	text = file.read()
	file.close()
	file = open ("%s/mx30/settings.py" % old, "w")
        file.write(text.replace("DATABASE_NAME = 'peer_center'", "DATABASE_NAME = '%s'" % db))
        file.close()
	shutil.rmtree("%s/mx30/backups" % old)
        shutil.copytree("%s/mx30_backup/backups" % old, "%s/mx30/backups" % old)
        print "Copying media..."
        copy_media(old, media_dir)
    except:
        sys.exit("Failed to copy and configure mx30 directory")
    try:
        os.system("python %s/mx30/manage.pyc syncdb --noinput >> /dev/null" % old)
	old_version = get_version("%s/mx30_backup" % old, "old")
	new_version = get_version("%s/mx30" % old, "new")
        run_upgrades_scripts(old, old_version, new_version)
        os.system("sudo python %s/mx30/manage.pyc syncdb --noinput >> /dev/null" % old)
    except:
        sys.exit("Failed to upgrade your version")
    print "New version was copied and configured"
    print "Restoring your data..."
    backups = os.listdir('%s/mx30/backups' % old)
    temp = [b for b in os.listdir('%s/mx30/backups' % old) if b.startswith('update')]
    temp.sort()
    data = temp[-1]
    try:
        os.system("python %s/mx30/manage.pyc loaddata %s/mx30/backups/%s" % (old, old, data))
    except:
        sys.exit("Failed to restore your data your version. In any case, it's saved in %s/mx30/backups/%s" % (old, data))
    configure_ip_and_prefix(options, old)
    print "Restarting apache..."
    try:
        os.system('/etc/init.d/apache2 restart')
    except:
        sys.exit("Failed to restart apache")
    print "Apache was restarted"
    sys.exit("Your version was successfully updated.")