def evolve(args, instance): print >> args.out, "=" * 78 print >> args.out, "Instance: ", instance root, closer = args.get_root(instance) set_current_instance(instance) managers = list(getUtilitiesFor(IEvolutionManager)) for pkg_name, factory in managers: __import__(pkg_name) pkg = sys.modules[pkg_name] VERSION = pkg.VERSION print >> args.out, 'Package %s' % pkg_name manager = factory(root, pkg_name, VERSION, 0) db_version = manager.get_db_version() print >> args.out, 'Code at software version %s' % VERSION print >> args.out, 'Database at version %s' % db_version if VERSION <= db_version: print >> args.out, 'Nothing to do' elif args.latest: evolve_to_latest(manager) ver = manager.get_db_version() print >> args.out, 'Evolved %s to %s' % (pkg_name, ver) else: print >> args.out, 'Not evolving (use --latest to do actual evolution)' print >> args.out, '' transaction.commit()
def run_evolve(*args): description = """\ Run evolve script(s) to make changes to the database when the application is upgraded. Example: 'evolve development.ini' """ usage = "usage: %prog config_uri" parser = optparse.OptionParser( usage=usage, description=textwrap.dedent(description) ) options, args = parser.parse_args(sys.argv[1:]) if not len(args) >= 1: print('You must provide at least one argument') return 2 config_uri = args[0] env = bootstrap(config_uri) root = env['root'] try: manager = ZODBEvolutionManager(root, evolve_packagename = 'madetomeasure.evolve', sw_version = VERSION, initial_db_version = 0) ver = manager.get_db_version() if ver < VERSION: evolve_to_latest(manager) print 'Evolved from %s to %s' % (ver, manager.get_db_version()) else: print 'Already evolved to latest version' finally: env['closer']
def main(*argv, **kwargs): config_file = sys.argv[-1] settings = get_appsettings(config_file) config = Configurator(settings=settings) manager = get_manager(config) if manager.get_db_version() >= manager.get_sw_version(): sys.stdout.write('Your database is already up do date... ') else: sys.stdout.write('Your database need to be updated... ') evolve_to_latest(manager) sys.stdout.write('Done!\n')
def main(*argv, **kwargs): logger = logging.getLogger() # logger.disabled = True config_file = sys.argv[-1] settings = get_appsettings(config_file) config = Configurator(settings=settings) manager = get_manager(config) if manager.get_db_version() >= manager.get_sw_version(): sys.stdout.write("Your database is already up do date... ") else: sys.stdout.write("Your database need to be updated... ") evolve_to_latest(manager) manager.evolve_to_current() sys.stdout.write("Done!\n")
def evolve(self): if self.needs_upgrade: logger.info("Running evolve with package '%s'. Current version: %s - target version: %s", self.name, self.db_version, self.sw_version) missing = self.check_requirements() if missing: msg = "Version requirements not met. The following are required:\n" for (name, ver) in missing.items(): msg += "%s: %s\n" % (name, ver) raise EvolverVersionError(msg) manager = self.get_manager() evolve_to_latest(manager) else: logger.debug("'%s' is already up to date.", self.name)
def main(argv=sys.argv): worker = ScriptWorker('evolve') root = worker.root print 'Evolve site' print "\n" manager = ZODBEvolutionManager(root, evolve_packagename='voteit.core.evolve', sw_version=VERSION, initial_db_version=0) ver = manager.get_db_version() if ver < VERSION: evolve_to_latest(manager) print 'Evolved from %s to %s' % (ver, manager.get_db_version()) else: print 'Already evolved to latest version' worker.shutdown()
def evolve_database(root, sw_version, initial_db_version=0): from repoze.evolution import ZODBEvolutionManager, evolve_to_latest manager = ZODBEvolutionManager( root, evolve_packagename='pyGallerid.evolve', sw_version=sw_version, initial_db_version=initial_db_version ) db_version = manager.get_db_version() sw_version = manager.get_sw_version() if db_version < sw_version: logger.info('Evolving database from %d to %d ...' \ % (db_version, sw_version)) evolve_to_latest(manager) if db_version < sw_version: logger.info('Finished evolving of the database.')
def main(argv=sys.argv): parser = create_karl_argparser( description='Bring database up to date with code.') parser.add_argument('--latest', action='store_true', help='Update to latest versions.') parser.add_argument('--force-version', dest='force_version', help='Force to run again.', type=int) args = parser.parse_args(argv[1:]) out = args.out env = args.bootstrap(args.config_uri) root = env['root'] print >> out, "=" * 78 managers = list(getUtilitiesFor(IEvolutionManager)) for pkg_name, factory in managers: __import__(pkg_name) pkg = sys.modules[pkg_name] VERSION = pkg.VERSION print >> out, 'Package %s' % pkg_name manager = factory(root, pkg_name, VERSION, 0) if args.force_version: manager.set_db_version(args.force_version) db_version = manager.get_db_version() print >> out, 'Code at software version %s' % VERSION print >> out, 'Database at version %s' % db_version if VERSION <= db_version: print >> out, 'Nothing to do' elif args.latest: evolve_to_latest(manager) ver = manager.get_db_version() print >> out, 'Evolved %s to %s' % (pkg_name, ver) else: print >> out, 'Not evolving (use --latest to do actual evolution)' print >> out, '' transaction.commit()
def main(argv=sys.argv): parser = create_karl_argparser( description='Bring database up to date with code.' ) parser.add_argument('--latest', action='store_true', help='Update to latest versions.') parser.add_argument('--force-version', dest='force_version', help='Force to run again.', type=int) args = parser.parse_args(argv[1:]) out = args.out env = args.bootstrap(args.config_uri) root = env['root'] print >> out, "=" * 78 managers = list(getUtilitiesFor(IEvolutionManager)) for pkg_name, factory in managers: __import__(pkg_name) pkg = sys.modules[pkg_name] VERSION = pkg.VERSION print >> out, 'Package %s' % pkg_name manager = factory(root, pkg_name, VERSION, 0) if args.force_version: manager.set_db_version(args.force_version) db_version = manager.get_db_version() print >> out, 'Code at software version %s' % VERSION print >> out, 'Database at version %s' % db_version if VERSION <= db_version: print >> out, 'Nothing to do' elif args.latest: evolve_to_latest(manager) ver = manager.get_db_version() print >> out, 'Evolved %s to %s' % (pkg_name, ver) else: print >> out, 'Not evolving (use --latest to do actual evolution)' print >> out, '' transaction.commit()
if package and package not in [x[0] for x in managers]: usage('No such package "%s"' % package) for pkg_name, factory in managers: if (package is None) or (pkg_name == package): __import__(pkg_name) pkg = sys.modules[pkg_name] VERSION = pkg.VERSION print 'Package %s' % pkg_name manager = factory(root, pkg_name, VERSION, 0) db_version = manager.get_db_version() print 'Code at software version %s' % VERSION print 'Database at version %s' % db_version if set_version is not None: manager._set_db_version(set_version) manager.transaction.commit() print 'Database version set to %s' % set_version else: if VERSION <= db_version: print 'Nothing to do' elif latest: evolve_to_latest(manager) ver = manager.get_db_version() print 'Evolved %s to %s' % (pkg_name, ver) else: print 'Not evolving (use --latest to do actual evolution)' print '' if __name__ == '__main__': main()
def evolve_packages( registry, root, package=None, set_db_version=None, latest=False, mark_all_current=False, importer=importer, ): """ Evolve the package named ``package`` """ # importer in kwarg list for testing purposes only if latest and (set_db_version is not None): raise ConflictingFlags('latest', 'set_db_version') if mark_all_current and (set_db_version is not None): raise ConflictingFlags('mark_all_current', 'set_db_version') if set_db_version and not package: raise NoPackageSpecified( 'Not setting db version to %s ' % set_db_version ) managers = list(registry.getUtilitiesFor(IEvolutionManager)) if package and package not in [x[0] for x in managers]: raise NoSuchPackage(package) results = [] for pkg_name, factory in managers: if (package is None) or (pkg_name == package): pkg = importer(pkg_name) sw_version = pkg.VERSION manager = factory(root, pkg_name, sw_version, 0) db_version = manager.get_db_version() result = {'package':pkg_name} result['sw_version'] = sw_version result['db_version'] = db_version if set_db_version is None: if latest: # does its own commit evolve_to_latest(manager) new_version = manager.get_db_version() result['new_version'] = new_version result['message'] = 'Evolved %s to %s' % ( pkg_name, new_version) elif mark_all_current: manager._set_db_version(sw_version) transaction.commit() result['new_version'] = sw_version result['message'] = 'Evolved %s to %s' % ( pkg_name, sw_version) else: result['new_version'] = db_version result['message'] = 'Not evolving (latest not specified)' else: if set_db_version == db_version: result['new_version'] = db_version result['message'] = 'Nothing to do' else: manager._set_db_version(set_db_version) transaction.commit() result['new_version'] = set_db_version result['message'] = ( 'Database version set to %s' % set_db_version ) results.append(result) return results
def _callFUT(self, *args, **kw): from repoze.evolution import evolve_to_latest return evolve_to_latest(*args, **kw)
usage('No such package "%s"' % package) for pkg_name, factory in managers: if (package is None) or (pkg_name == package): __import__(pkg_name) pkg = sys.modules[pkg_name] VERSION = pkg.VERSION print 'Package %s' % pkg_name manager = factory(root, pkg_name, VERSION, 0) db_version = manager.get_db_version() print 'Code at software version %s' % VERSION print 'Database at version %s' % db_version if set_version is not None: manager._set_db_version(set_version) manager.transaction.commit() print 'Database version set to %s' % set_version else: if VERSION <= db_version: print 'Nothing to do' elif latest: evolve_to_latest(manager) ver = manager.get_db_version() print 'Evolved %s to %s' % (pkg_name, ver) else: print 'Not evolving (use --latest to do actual evolution)' print '' if __name__ == '__main__': main()
def evolve_packages( registry, root, package=None, set_db_version=None, latest=False, mark_all_current=False, importer=importer, ): """ Evolve the package named ``package`` """ # importer in kwarg list for testing purposes only if latest and (set_db_version is not None): raise ConflictingFlags('latest', 'set_db_version') if mark_all_current and (set_db_version is not None): raise ConflictingFlags('mark_all_current', 'set_db_version') if set_db_version and not package: raise NoPackageSpecified( 'Not setting db version to %s ' % set_db_version ) managers = list(registry.getUtilitiesFor(IEvolutionManager)) # XXX temporary hack to make substanced evolution happen before any other # evolution (must die if/when we add topological sorting of evolution steps # or packages) for i, (pkg_name, factory) in enumerate(list(managers)): if pkg_name == 'substanced.evolution': managers.pop(i) managers.insert(0, (pkg_name, factory)) break if package and package not in [x[0] for x in managers]: raise NoSuchPackage(package) results = [] for pkg_name, factory in managers: if (package is None) or (pkg_name == package): pkg = importer(pkg_name) sw_version = pkg.VERSION manager = factory(root, pkg_name, sw_version, 0) db_version = manager.get_db_version() result = {'package':pkg_name} result['sw_version'] = sw_version result['db_version'] = db_version if set_db_version is None: if latest: # does its own commit evolve_to_latest(manager) new_version = manager.get_db_version() result['new_version'] = new_version result['message'] = 'Evolved %s to %s' % ( pkg_name, new_version) elif mark_all_current: manager._set_db_version(sw_version) transaction.commit() result['new_version'] = sw_version result['message'] = 'Evolved %s to %s' % ( pkg_name, sw_version) else: result['new_version'] = db_version result['message'] = 'Not evolving (latest not specified)' else: if set_db_version == db_version: result['new_version'] = db_version result['message'] = 'Nothing to do' else: manager._set_db_version(set_db_version) transaction.commit() result['new_version'] = set_db_version result['message'] = ( 'Database version set to %s' % set_db_version ) results.append(result) return results