def __init__(self, config, migration, obj, name_suffix=None, requires=None, **kwargs): name = '{0}_{1}'.format(utils.qualname(self.__class__), taskflow_utils.object_name(obj)) if name_suffix is not None: name += '_' + name_suffix if requires is None: requires = [] else: requires = list(requires) requires.extend(reflection.get_callable_args(self.migrate)) super(MigrationTask, self).__init__(name=name, requires=requires, **kwargs) self.src_cloud = config.clouds[migration.source] self.dst_cloud = config.clouds[migration.destination] self.config = config self.migration = migration self.created_object = None
def __init__(self, obj, config, migration, **kwargs): super(MigrationTask, self).__init__( name='{0}_{1}'.format(utils.qualname(self.__class__), taskflow_utils.object_name(obj)), requires=reflection.get_callable_args(self.migrate), **kwargs) self.src_object = obj self.config = config self.migration = migration self.created_object = None
def create_migration_flow(obj, config, migration): """ Creates migration flow for object ``obj`` based on configuration ``config`` migration ``migration``. :param obj: model.Model instance :param config: configuration :param migration: migration (part of configuration) :return: migration flow for an object """ if obj.find_link(config.clouds[migration.destination]) is not None: return None cls = obj.get_class() flow_factories = migration.migration_flow_factories if cls not in flow_factories: raise RuntimeError('Failed to find migration flow factory') else: flow = linear_flow.Flow('top_level_' + taskflow_utils.object_name(obj), retry=retry.AlwaysRevert()) factory = flow_factories[cls]() migration_tasks = factory.create_flow(config, migration, obj) flow.add(*migration_tasks) return flow
def __init__(self, obj, **kwargs): super(InjectSourceObject, self).__init__(name='InjectSourceObject_{}'.format( taskflow_utils.object_name(obj)), **kwargs) self.source_obj = obj