Пример #1
0
class Cmfive:
    def __init__(self):
        self.compose = DockerCompose()
        self.facade = Facade()

    def setup(self):
        logger.info('\n-- step 1. docker compose --')
        self.compose.up()

        logger.info('\n-- step 2. cmfive install --')
        self.install()
Пример #2
0
    def __init__(self, name, repo, cwd='.', branch='master'):
        self.name = name
        self.repo = repo
        self.cwd = cwd
        self.docker = DockerCompose(cwd)
        self.git = Git(repo, cwd, branch)

        if not exists(cwd):
            logger.info('<%s> creating missing directory %s', self.name, cwd)
            makedirs(cwd)
            self.git.clone_if_necessary()
            try:
                self.first_startup()
            except DockerComposeError as e:
                logger.error('<%s> could not start docker-compose: %s',
                             self.name, e.errors)
Пример #3
0
def create_production_image(tag):
    # provision cmfive instance
    logger.info('provision cmfive instance')
    cmfive = CmfiveProduction.create()
    cmfive.setup()

    # snapshot web container
    logger.info('snapshot web container')
    WebService.snapshot_container(tag)

    # teardown cmfive instance
    logger.info('teardown cmfive instance')
    DockerCompose().down()
    def __init__(self, name, repo, cwd='.', branch='master'):
        self.name = name
        self.repo = repo
        self.cwd = cwd
        self.git = Git(repo, cwd, branch)
        self.docker = DockerCompose(cwd)

        self.container = None
        self.upgrade_script = None
        self.init_script = None

        if not exists(cwd):
            logger.info('<%s> creating missing directory %s', self.name, cwd)
            makedirs(cwd)
            self.git.clone_if_necessary()
            try:
                self.first_startup()
            except DockerComposeError as e:
                logger.error('<%s> could not start docker-compose: %s',
                             self.name, e.errors)
Пример #5
0
    def create_cmfive_config_file(self, db_hostname):
        # add or override db_hostname config
        tokens = dict(self.config)
        tokens.update({"db_hostname": db_hostname})

        # render template into stage dir
        util.inflate_template(
            self.dirs.cmfive.joinpath("config.php.template"),
            self.dirs.stage,
            ".template",
            tokens,
            False
        )

        # copy file into container(s)
        for container in DockerCompose.containers_by_service(self.SERVICE_NAME):
            container.copy_file_into(
                source=self.dirs.stage.joinpath("config.php"),
                target="/var/www/html/config.php"
            )
Пример #6
0
class AutoUpdater():
    def __init__(self, name, repo, cwd='.', branch='master'):
        self.name = name
        self.repo = repo
        self.cwd = cwd
        self.docker = DockerCompose(cwd)
        self.git = Git(repo, cwd, branch)

        if not exists(cwd):
            logger.info('<%s> creating missing directory %s', self.name, cwd)
            makedirs(cwd)
            self.git.clone_if_necessary()
            try:
                self.first_startup()
            except DockerComposeError as e:
                logger.error('<%s> could not start docker-compose: %s',
                             self.name, e.errors)

    def build(self):
        try:
            self.docker.build()
        except DockerComposeError as e:
            logger.warning('<%s> build threw an error: %s', self.name,
                           e.errors)

    def start(self):
        try:
            self.docker.start()
        except DockerComposeError as e:
            logger.warning('<%s> start threw an error: %s', self.name,
                           e.errors)

    def update(self):
        if self.git.changed_files() > 0:
            running_commit_date = self.git.last_commit_date()
            self.git.pull()
            latest_commit_date = self.git.last_commit_date()
            self.docker.update()
            logger.info('<%s> update finished, %s to %s', self.name,
                        running_commit_date, latest_commit_date)
        else:
            logger.info('<%s> no update needed', self.name)
Пример #7
0
class AutoUpdater:
    def __init__(self, name, repo, cwd='.', branch='master'):
        self.name = name
        self.repo = repo
        self.cwd = cwd
        self.git = Git(repo, cwd, branch)
        self.docker = DockerCompose(cwd)

        self.container = None
        self.upgrade_script = None
        self.init_script = None

        if not exists(cwd):
            logger.info('<%s> creating missing directory %s', self.name, cwd)
            makedirs(cwd)
            self.git.clone_if_necessary()
            try:
                self.first_startup()
            except DockerComposeError as e:
                logger.error('<%s> could not start docker-compose: %s',
                             self.name, e.errors)

    def add_scripts(self, container='web', init_cmd='', upgrade_cmd=''):
        self.container = container
        self.init_script = init_cmd
        self.upgrade_script = upgrade_cmd

    def first_startup(self):
        self.docker.update()
        if self.init_script:
            try:
                res = self.docker.exec(self.container, self.upgrade_script)
                logger.info('<%s> initialized with %s', self.name, res)
            except DockerComposeError as e:
                logger.warning('%s: %s', e.message, e.errors)
        self.upgrade()

    def start(self):
        try:
            self.docker.start()
        except DockerComposeError as e:
            logger.warning('<%s> start threw an error: %s', self.name,
                           e.errors)

    def update(self):
        if self.git.changed_files() > 0:
            running_commit_date = self.git.last_commit_date()
            self.git.pull()
            latest_commit_date = self.git.last_commit_date()
            self.docker.update()
            logger.info(
                '<%s> update finished, %s to %s',
                self.name,
                running_commit_date,
                latest_commit_date,
            )
        else:
            logger.info('<%s> no update needed', self.name)

    def upgrade(self):
        if self.upgrade_script:
            try:
                res = self.docker.exec(self.container, self.upgrade_script)
                logger.info('<%s> upgraded with %s', self.name, res)
            except DockerComposeError as e:
                logger.warning('%s: %s', e.message, e.errors)
class AutoUpdater():
    def __init__(self, name, repo, cwd='.', branch='master'):
        self.name = name
        self.repo = repo
        self.cwd = cwd
        self.git = Git(repo, cwd, branch)
        self.docker = DockerCompose(cwd)

        self.container = None
        self.upgrade_script = None
        self.init_script = None

        if not exists(cwd):
            logger.info('<%s> creating missing directory %s', self.name, cwd)
            makedirs(cwd)
            self.git.clone_if_necessary()
            try:
                self.first_startup()
            except DockerComposeError as e:
                logger.error('<%s> could not start docker-compose: %s',
                             self.name, e.errors)

    def add_scripts(self, container='web', init_cmd='', upgrade_cmd=''):
        self.container = container
        self.init_script = init_cmd
        self.upgrade_script = upgrade_cmd

    def first_startup(self):
        self.docker.update()
        if self.init_script:
            try:
                res = self.docker.exec(self.container, self.upgrade_script)
                logger.info('<%s> initialized with %s', self.name, res)
            except DockerComposeError as e:
                logger.warning('%s: %s', e.message, e.errors)
        self.upgrade()

    def start(self):
        try:
            self.docker.start()
        except DockerComposeError as e:
            logger.warning('<%s> start threw an error: %s', self.name,
                           e.errors)

    def update(self):
        if self.git.changed_files() > 0:
            running_commit_date = self.git.last_commit_date()
            self.git.pull()
            latest_commit_date = self.git.last_commit_date()
            self.docker.update()
            logger.info('<%s> update finished, %s to %s', self.name,
                        running_commit_date, latest_commit_date)
        else:
            logger.info('<%s> no update needed', self.name)

    def upgrade(self):
        if self.upgrade_script:
            try:
                res = self.docker.exec(self.container, self.upgrade_script)
                logger.info('<%s> upgraded with %s', self.name, res)
            except DockerComposeError as e:
                logger.warning('%s: %s', e.message, e.errors)
Пример #9
0
 def container_by_index(index):
     containers = list(DockerCompose.containers_by_service(WebService.SERVICE_NAME))
     return containers[index]
Пример #10
0
 def run(self, command):
     """run command against web service container(s)"""
     for container in DockerCompose.containers_by_service(self.SERVICE_NAME):
         container.run_command(command)
Пример #11
0
 def __init__(self):
     self.compose = DockerCompose()
     self.facade = Facade()
Пример #12
0
def update_default():
    init_singletons("default", True)
    DockerCompose().init_environment()