Beispiel #1
0
    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
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
 def __init__(self, obj, **kwargs):
     super(InjectSourceObject,
           self).__init__(name='InjectSourceObject_{}'.format(
               taskflow_utils.object_name(obj)),
                          **kwargs)
     self.source_obj = obj