def setUp(self): self.registry = base.Registry() self.registry.register(Inside) self.registry.register(MigratableDoc) migration.get_registry().register(Migration()) self.db = emu.Database() self.unserializer = dcommon.CouchdbUnserializer(registry=self.registry) self.client = client.Connection(self.db, self.unserializer)
def setUp(self): self.registry = r = migration.get_registry() r.register(FakeMigration(source_ver=1, target_ver=3)) r.register(FakeMigration(source_ver=2, target_ver=3)) r.register(FakeMigration(source_ver=3, target_ver=4)) r.register(FakeMigration(source_ver=3, target_ver=5)) r.register(FakeMigration(source_ver=5, target_ver=6))
def plan_migration(cls, source, target): # build up the shortest list of transformations which leads between # versions middle = range(source + 1, target) registry = migration.get_registry() for n_divisions in range(target - source): # test all the possible paths between revisions in given # number of steps for division in itertools.combinations(middle, n_divisions): s = source migrations = list() for index in division: m = registry.lookup((cls.type_name, s, index)) if not m: break migrations.append(m) s = index else: m = registry.lookup((cls.type_name, s, target)) if not m: continue migrations.append(m) return migrations raise NotMigratable((cls.type_name, source, target))
def __init__(self): self.log_name = self.name self.module = self.__module__ log.Logger.__init__(self, log.get_default()) self._restorators = serialization.get_registry() self._agents = get_agent_registry() self._views = get_view_registry() self._initial_data = get_initial_data_registry() self._adapters = iadapter.AdapterRegistry() self._models = model.get_registry() self._migrations = migration.get_registry()