コード例 #1
0
    def get_revert_migrations(self, current_migrations, backup_migrations):
        current_migrations, all_migrations = itertools.tee(
            reversed(map(
                Migration,
                current_migrations.splitlines(),
            )))
        all_migrations = list(all_migrations)

        backup_migrations = reversed(
            map(
                Migration,
                backup_migrations.splitlines(),
            ))

        revert_migrations = utils.OrderedDict()

        while True:
            backup_migration = next(backup_migrations, None)
            for current_migration in current_migrations:
                if current_migration == backup_migration:
                    break
                revert_migrations[
                    current_migration.app] = self._get_parent_migration(
                        current_migration,
                        migrations=all_migrations,
                    )

            if backup_migration is None:
                return revert_migrations.values()
コード例 #2
0
 def __init__(self,
              callback=None,
              color=colors.yellow,
              name=None,
              *args,
              **kwargs):
     super(Infrastructure, self).__init__(*args, **kwargs)
     # We need to be sure that `default()` will be at first place
     # every time when vars(self) is being invoked.
     # See Fabric's `extract_tasks()`
     self.__dict__ = utils.OrderedDict((('default', self.default), ),
                                       **self.__dict__)
     self.callback = callback
     self.color = color
     self.name = name = name or callback.__name__
     name = color(name)
     self.default.__doc__ = self.default.__doc__.format(name=name)
     self.confirm.__doc__ = self.confirm.__doc__.format(name=name)
コード例 #3
0
ファイル: tasks.py プロジェクト: t0p4/fabricio
    def __init__(self,
                 callback=None,
                 color=colors.yellow,
                 name=None,
                 *args,
                 **kwargs):
        super(Infrastructure, self).__init__(*args, **kwargs)

        # We need to be sure that `default()` will be at first place
        # every time when vars(self) is being invoked.
        # This is necessary to exclude `default` from the list of task
        # because of it's already there as default task.
        # See `fabric.main.extract_tasks()` for details
        self.__dict__ = utils.OrderedDict([('default', self.default)],
                                          **self.__dict__)

        self.callback = callback
        self.color = color
        self.name = name = name or callback.__name__
        name = color(name)
        self.default.__doc__ = self.default.__doc__.format(name=name)
        self.confirm.__doc__ = self.confirm.__doc__.format(name=name)
コード例 #4
0
ファイル: test_docker_stack.py プロジェクト: t0p4/fabricio
def as_ordereddict(result):
    return utils.OrderedDict(sorted(result.items()))
コード例 #5
0
ファイル: test_utils.py プロジェクト: t0p4/fabricio
 def test_str_version(self):
     cases = dict(
         empty_options_list=dict(
             options=utils.OrderedDict(),
             expected_str_version='',
         ),
         with_underscore=dict(
             options=utils.OrderedDict(foo_baz='bar'),
             expected_str_version='--foo_baz=bar',
         ),
         multiword=dict(
             options=utils.OrderedDict(foo='bar baz'),
             expected_str_version="--foo='bar baz'",
         ),
         empty=dict(
             options=utils.OrderedDict(foo=''),
             expected_str_version="--foo=''",
         ),
         str=dict(
             options=utils.OrderedDict(foo='bar'),
             expected_str_version='--foo=bar',
         ),
         unicode=dict(
             options=utils.OrderedDict(foo=u'привет'),
             expected_str_version=u"--foo='привет'",
         ),
         integer=dict(
             options=utils.OrderedDict(foo=42),
             expected_str_version='--foo=42',
         ),
         integer_zero=dict(
             options=utils.OrderedDict(foo=0),
             expected_str_version='--foo=0',
         ),
         integer_one=dict(
             options=utils.OrderedDict(foo=1),
             expected_str_version='--foo=1',
         ),
         integer_minus_one=dict(
             options=utils.OrderedDict(foo=-1),
             expected_str_version='--foo=-1',
         ),
         image=dict(
             options=utils.OrderedDict(image=docker.Image('image:tag')),
             expected_str_version='--image=image:tag',
         ),
         triple_length=dict(
             options=utils.OrderedDict([
                 ('foo', 'foo'),
                 ('bar', 'bar'),
                 ('baz', 'baz'),
             ]),
             expected_str_version='--foo=foo --bar=bar --baz=baz',
         ),
         multi_value_empty=dict(
             options=utils.OrderedDict(foo=[]),
             expected_str_version='',
         ),
         multi_value=dict(
             options=utils.OrderedDict(foo=['bar', 'baz']),
             expected_str_version='--foo=bar --foo=baz',
         ),
         multi_value_integer=dict(
             options=utils.OrderedDict(foo=[42, 43]),
             expected_str_version='--foo=42 --foo=43',
         ),
         boolean_values=dict(
             options=utils.OrderedDict(foo=True, bar=False),
             expected_str_version='--foo',
         ),
         mix=dict(
             options=utils.OrderedDict([
                 ('foo', 'foo'),
                 ('bar', True),
                 ('baz', ['1', 'a']),
             ]),
             expected_str_version='--foo=foo --bar --baz=1 --baz=a',
         ),
     )
     for case, params in cases.items():
         with self.subTest(case=case):
             options = utils.Options(params['options'])
             expected_str_version = params['expected_str_version']
             self.assertEqual(expected_str_version, six.text_type(options))
コード例 #6
0
ファイル: test_utils.py プロジェクト: thewhitewizard/fabricio
 def test_str_version(self):
     cases = dict(
         empty_options_list=dict(
             options=utils.OrderedDict(),
             expected_str_version='',
         ),
         with_underscore=dict(
             options=utils.OrderedDict(foo_baz='bar'),
             expected_str_version='--foo_baz bar',
         ),
         multiword=dict(
             options=utils.OrderedDict(foo='bar baz'),
             expected_str_version='--foo "bar baz"',
         ),
         empty=dict(
             options=utils.OrderedDict(foo=''),
             expected_str_version='--foo ""',
         ),
         with_single_quotes=dict(
             options=utils.OrderedDict(foo="'bar'"),
             expected_str_version='--foo "\'bar\'"',
         ),
         with_double_quotes=dict(
             options=utils.OrderedDict(foo='"bar"'),
             expected_str_version='--foo "\\"bar\\""',
         ),
         with_quotes_and_spaces=dict(
             options=utils.OrderedDict(foo='"bar" \'baz\''),
             expected_str_version='--foo "\\"bar\\" \'baz\'"',
         ),
         str=dict(
             options=utils.OrderedDict(foo='bar'),
             expected_str_version='--foo bar',
         ),
         unicode=dict(
             options=utils.OrderedDict(foo=u'привет'),
             expected_str_version=u'--foo привет',
         ),
         integer=dict(
             options=utils.OrderedDict(foo=42),
             expected_str_version='--foo 42',
         ),
         image=dict(
             options=utils.OrderedDict(image=docker.Image('image:tag')),
             expected_str_version='--image image:tag',
         ),
         triple_length=dict(
             options=utils.OrderedDict([
                 ('foo', 'foo'),
                 ('bar', 'bar'),
                 ('baz', 'baz'),
             ]),
             expected_str_version='--foo foo --bar bar --baz baz',
         ),
         multi_value=dict(
             options=utils.OrderedDict(foo=['bar', 'baz']),
             expected_str_version='--foo bar --foo baz',
         ),
         multi_value_integer=dict(
             options=utils.OrderedDict(foo=[42, 43]),
             expected_str_version='--foo 42 --foo 43',
         ),
         boolean_values=dict(
             options=utils.OrderedDict(foo=True, bar=False),
             expected_str_version='--foo',
         ),
         mix=dict(
             options=utils.OrderedDict([
                 ('foo', 'foo'),
                 ('bar', True),
                 ('baz', ['1', 'a']),
             ]),
             expected_str_version='--foo foo --bar --baz 1 --baz a',
         ),
     )
     for case, params in cases.items():
         with self.subTest(case=case):
             options = utils.Options(params['options'])
             expected_str_version = params['expected_str_version']
             self.assertEqual(expected_str_version, six.text_type(options))
コード例 #7
0
ファイル: tasks.py プロジェクト: t0p4/fabricio
    def __init__(
            self,
            service=None,
            registry=None,
            host_registry=None,
            account=None,
            ssh_tunnel_port=None,  # deprecated
            ssh_tunnel=None,
            migrate_commands=False,
            backup_commands=False,
            pull_command=False,
            update_command=False,
            revert_command=False,
            **kwargs):
        super(DockerTasks, self).__init__(**kwargs)

        # We need to be sure that `deploy()` will be at first place
        # every time when vars(self) is being invoked.
        # This is necessary to exclude `deploy` from the list of task
        # because of it's already there as default task.
        # See `fabric.main.extract_tasks()` for details
        self.__dict__ = utils.OrderedDict([('deploy', self.deploy)],
                                          **self.__dict__)

        self.service = service
        self.registry = registry
        self.host_registry = host_registry or registry
        self.account = account
        self.ssh_tunnel = ssh_tunnel

        if ssh_tunnel_port:
            warnings.warn(
                'ssh_tunnel_port is deprecated and will be removed in v0.5, '
                'use ssh_tunnel instead',
                RuntimeWarning,
                stacklevel=self._warnings_stacklevel,
            )
            registry = self.registry or self.image and self.image.registry
            assert registry, 'must provide registry if using ssh_tunnel_port'
            self.host_registry = 'localhost:%d' % ssh_tunnel_port
            self.ssh_tunnel = '{port}:{host}:{host_port}'.format(
                port=ssh_tunnel_port,
                host=registry.host,
                host_port=registry.port,
            )

        # if there is at least one task to run then assume it is command mode,
        # there is no other way to find this out
        command_mode = bool(fab.env.tasks)
        self.backup.use_task_objects = command_mode or backup_commands
        self.restore.use_task_objects = command_mode or backup_commands
        self.migrate.use_task_objects = command_mode or migrate_commands
        self.migrate_back.use_task_objects = command_mode or migrate_commands
        self.revert.use_task_objects = command_mode or revert_command
        self.pull.use_task_objects = command_mode or pull_command
        self.update.use_task_objects = command_mode or update_command
        if command_mode:
            # set original name for `deploy` method to allow explicit invocation
            self.deploy.name = 'deploy'

        # enable following commands only in custom registry mode
        custom_mode = bool(registry or account)
        self.prepare.use_task_objects = command_mode or custom_mode
        self.push.use_task_objects = command_mode or custom_mode
        self.upgrade.use_task_objects = command_mode or custom_mode