Exemple #1
0
 def upgrade(self, tag=None, force=False, backup=False, migrate=True):
     """
     upgrade service to a new version (backup -> pull -> migrate -> update)
     """
     if utils.strtobool(backup):
         self.backup()
     self.pull(tag=tag)
     if utils.strtobool(migrate):
         self.migrate(tag=tag)
     self.update(tag=tag, force=force)
Exemple #2
0
 def deploy(self, tag=None, force=False, migrate=True, backup=False):
     """
     backup -> pull -> migrate -> update
     """
     if utils.strtobool(backup):
         execute(self.backup)
     execute(self.pull, tag=tag)
     if utils.strtobool(migrate):
         execute(self.migrate, tag=tag)
     execute(self.update, tag=tag, force=force)
Exemple #3
0
 def upgrade(self, tag=None, force=False, backup=False, migrate=True):
     """
     upgrade service to a new version (backup -> pull -> migrate -> update)
     """
     if utils.strtobool(backup):
         self.backup()
     self.pull(tag=tag)
     if utils.strtobool(migrate):
         self.migrate(tag=tag)
     self.update(tag=tag, force=force)
Exemple #4
0
 def rollback(self, migrate_back=True):
     """
     rollback service to a previous state (migrate-back -> revert)
     """
     if utils.strtobool(migrate_back):
         self.migrate_back()
     self.revert()
Exemple #5
0
 def rollback(self, migrate_back=True):
     """
     rollback Docker container to previous version
     """
     if strtobool(migrate_back):
         fab.execute(self.migrate_back)
     fab.execute(self.revert)
Exemple #6
0
 def rollback(self, migrate_back=True):
     """
     rollback service to a previous state (migrate-back -> revert)
     """
     if utils.strtobool(migrate_back):
         self.migrate_back()
     self.revert()
Exemple #7
0
    def prepare(self, tag=None, **kwargs):
        """
        build Docker image (see 'docker build --help' for available options)
        """
        # default options
        kwargs.setdefault('pull', True)
        kwargs.setdefault('force-rm', True)

        for key, value in kwargs.items():
            try:
                kwargs[key] = utils.strtobool(value)
            except ValueError:
                pass

        options = utils.Options(tag=self.image[self.registry:tag:self.account],
                                **kwargs)
        fabricio.local(
            'docker build {options} {build_path}'.format(
                build_path=self.build_path,
                options=options,
            ),
            quiet=False,
            use_cache=True,
        )
        self.delete_dangling_images()
Exemple #8
0
 def rollback(self, migrate_back=True):
     """
     rollback service to a previous version (migrate-back -> revert)
     """
     if utils.strtobool(migrate_back):
         execute(self.migrate_back)
     execute(self.revert)
Exemple #9
0
 def update(self, tag=None, force=False):
     """
     start new Docker container if necessary
     """
     updated = self.container.update(tag=tag, force=strtobool(force))
     if not updated:
         fabricio.log('No changes detected, update skipped.')
Exemple #10
0
 def deploy(
     self,
     tag=None,
     force=False,
     prepare=None,  # deprecated
     backup=False,
     migrate=True,
 ):
     """
     full service deploy (prepare -> push -> upgrade)
     """
     if prepare is not None:
         warnings.warn(
             "'prepare' param is deprecated and will be removed in v0.4, "
             "use 'upgrade' command if you want to skip prepare/push steps",
             category=RuntimeWarning,
         )
     if prepare is None or utils.strtobool(prepare):
         execute(self.prepare, tag=tag)
         execute(self.push, tag=tag)
     execute(
         self.upgrade,
         tag=tag,
         force=force,
         backup=backup,
         migrate=migrate,
     )
Exemple #11
0
 def destroy(self, delete_data=False):
     super(PostgresqlContainer, self).destroy()
     if utils.strtobool(delete_data):
         fabricio.remove_file(
             self.pg_data,
             sudo=self.sudo,
             force=True,
             recursive=True,
         )
Exemple #12
0
def localhost(force_local=False):
    if utils.strtobool(force_local):
        # replace fabricio.run by fabricio.local to run all commands locally
        fabricio.run = functools.partial(fabricio.local, capture=True)

        # uncomment row below to skip file uploading (e.g. docker-compose.yml)
        # fab.put = lambda *args, **kwargs: None

    fab.env.update(roledefs={
        'web': ['localhost'],
    }, )
Exemple #13
0
 def deploy(
     self,
     tag=None,
     force=False,
     prepare=True,
     backup=False,
     migrate=True,
 ):
     """
     prepare -> push -> backup -> pull -> migrate -> update
     """
     if strtobool(prepare):
         fab.execute(self.prepare, tag=tag)
         fab.execute(self.push, tag=tag)
     if strtobool(backup):
         fab.execute(self.backup)
     fab.execute(self.pull, tag=tag)
     if strtobool(migrate):
         fab.execute(self.migrate, tag=tag)
     fab.execute(self.update, tag=tag, force=force)
Exemple #14
0
 def update(self, tag=None, force=False):
     """
     update service to a new version
     """
     updated = self.service.update(
         tag=tag,
         registry=self.registry,
         force=utils.strtobool(force),
     )
     if not updated:
         fabricio.log('Host does not require update, update skipped.')
Exemple #15
0
 def update(self, tag=None, force=False):
     """
     update service to a new version
     """
     updated = self.service.update(
         tag=tag,
         registry=self.host_registry,
         account=self.account,
         force=utils.strtobool(force),
     )
     if not updated:
         fabricio.log('No changes detected, update skipped.')
Exemple #16
0
 def update(self, tag=None, force=False):
     """
     update service to a new version
     """
     with self.remote_host():
         updated = self.service.update(
             tag=tag,
             registry=self.host_registry,
             account=self.account,
             force=utils.strtobool(force),
         )
     if updated is False:
         fabricio.log('No changes detected, update skipped.')
Exemple #17
0
def localhost(force_local=False):
    if utils.strtobool(force_local):
        # replace fabricio.run by fabricio.local to run all commands locally
        fabricio.run = functools.partial(fabricio.local, capture=True)

        # uncomment row below to skip file uploading (e.g. docker-compose.yml)
        # fab.put = lambda *args, **kwargs: None

    fab.env.update(
        roledefs={
            'web': ['localhost'],
        },
    )
Exemple #18
0
 def prepare(self, tag=None, **kwargs):
     """
     build Docker image (see 'docker build --help' for available options)
     """
     for key, value in kwargs.items():
         with contextlib.suppress(ValueError):
             kwargs[key] = utils.strtobool(value)
     options = utils.Options(kwargs)
     image = self.image[self.registry:tag:
                        self.account]  # type: docker.Image
     image.build(
         local=True,
         build_path=self.build_path,
         options=options,
         use_cache=True,
     )
Exemple #19
0
 def prepare(self, tag=None, **kwargs):
     """
     build Docker image (see 'docker build --help' for available options)
     """
     for key, value in kwargs.items():
         try:
             kwargs[key] = utils.strtobool(value)
         except ValueError:
             pass
     options = utils.Options(kwargs)
     image = self.image[self.registry:tag:self.account]  # type: docker.Image
     image.build(
         local=True,
         build_path=self.build_path,
         options=options,
         use_cache=True,
     )
Exemple #20
0
 def prepare(self, tag=None, no_cache=False):
     """
     prepare Docker image
     """
     options = Options([
         ('tag', str(self.image[tag])),
         ('no-cache', strtobool(no_cache)),
         ('pull', True),
     ])
     fabricio.local(
         'docker build {options} {build_path}'.format(
             build_path=self.build_path,
             options=options,
         ),
         quiet=False,
         use_cache=True,
     )
     self.delete_dangling_images()
Exemple #21
0
 def prepare(self, tag=None, no_cache=False):
     """
     build Docker image
     """
     options = utils.Options([
         ('tag', self.image[self.registry:tag:self.account]),
         ('no-cache', utils.strtobool(no_cache)),
         ('pull', True),
     ])
     fabricio.local(
         'docker build {options} {build_path}'.format(
             build_path=self.build_path,
             options=options,
         ),
         quiet=False,
         use_cache=True,
     )
     self.delete_dangling_images()