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)
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)
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)
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()
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)
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()
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()
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)
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.')
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, )
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, )
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'], }, )
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)
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.')
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.')
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.')
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'], }, )
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, )
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, )
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()
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()