Exemplo n.º 1
0
def dump(config, savedir, symlink=False):
    if 'active' in config and config['active'] in ('false', 'off', '0'):
        return

    if 'src' in config:
        src = config['src']
    else:
        src = config['dir']

    if 'ignore' in config:
        ignore = ignore_patterns(
            *[p.strip() for p in config['ignore'].split(',')])
    else:
        ignore = None

    run_hook('pre-create-code', [config['project'], src],
             logger=logger,
             exit_on_error=True)

    makedirs_silent(savedir)
    dest = os.path.join(savedir, config['project'])
    if symlink:
        logger.info("symlink '%(src)s' to '%(dest)s'" % {
            'src': src,
            'dest': dest
        })
        symlink_silent(src, dest)
    else:
        logger.info("copy '%(src)s' to '%(dest)s'" % {
            'src': src,
            'dest': dest
        })
        copytree(src, dest, symlinks=True, ignore=ignore)

    run_hook('post-create-code', [config['project'], src], logger=logger)
Exemplo n.º 2
0
def dump(config, savedir, symlink=False):
    if 'active' in config and config['active'] in ('false', 'off', '0'):
        return

    if 'src' in config:
        src = config['src']
    else:
        src = config['dir']

    if 'ignore' in config:
        ignore = ignore_patterns(*[p.strip() for p in config['ignore'].split(',')])
    else:
        ignore = None

    run_hook('pre-create-code', [config['project'], src], logger=logger, exit_on_error=True)

    makedirs_silent(savedir)
    dest = os.path.join(savedir, config['project'])
    if symlink:
        logger.info("symlink '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest})
        symlink_silent(src, dest)
    else:
        logger.info("copy '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest})
        copytree(src, dest, symlinks=True, ignore=ignore)

    run_hook('post-create-code', [config['project'], src], logger=logger)
Exemplo n.º 3
0
def dump(config, savedir, symlink=False):
    if 'active' in config and config['active'] in ('false', 'off', '0'):
        return

    dirs = get_dirs(config['dirs'])

    if 'ignore' in config:
        ignore = ignore_patterns(*[p.strip() for p in config['ignore'].split(',')])
    else:
        ignore = None

    for src in dirs:
        if src.startswith('/'):
            dest = os.path.join(savedir, src[1:])
            if src.endswith('/'):
                dest = dest[:-1]
        else:
            logger.error("'%s' is not an absolute path" % src)
            sys.exit(1)

        if symlink:
            makedirs_silent(os.path.dirname(dest))
            logger.info("symlink '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest})
            symlink_silent(src, dest)
        else:
            logger.info("copying '%(src)s' to '%(dest)s'" % {'src': src, 'dest': dest})
            copytree(src, dest, symlinks=True, ignore=ignore, update_rights=True)
Exemplo n.º 4
0
def create_update_archive(base, config):
    # FIXME: add version ?
    logger.debug("create '%(base)s' directory" % {'base': base})
    makedirs_silent(base)

    configdst = os.path.join(base, 'deploy.cfg')
    logger.debug("writing full config to '%(configdst)s'" % {'configdst': configdst})
    with open(configdst, 'wb') as configfile:
        config.write(configfile)

    return base
Exemplo n.º 5
0
def create_update_archive(base, config):
    # FIXME: add version ?
    logger.debug("create '%(base)s' directory" % {"base": base})
    makedirs_silent(base)

    configdst = os.path.join(base, "deploy.cfg")
    logger.debug("writing full config to '%(configdst)s'" % {"configdst": configdst})
    with open(configdst, "wb") as configfile:
        config.write(configfile)

    return base
Exemplo n.º 6
0
def dump(config, rawtables, savedir):
    if 'active' in config and config['active'] in ('false', 'off', '0'):
        return

    makedirs_silent(savedir)

    dump = config['dump'].split()
    jobs = []
    for database, tables in get_tables(rawtables or config['names']).iteritems():
        if not tables:
            # database without a table: dump all
            cmd = dump + [database]
            output = file(os.path.join(savedir, database + '.dump'), 'w+b')
            errors = file(os.path.join(savedir, database + '.dump.log'), 'w')

            jobs.append({'cmd': cmd,
                         'args': {'stdout': output, 'stderr': errors}})
        else:
            for table in tables:
                cmd = [] + dump  # clone dump
                # Enclose table name in doubl quote
                qtable = '.'.join(['"%s"' % e for e in table.split('.')])
                cmd += ['-n'] if config['use_schema'] in ('true', 'yes', '1') \
                    else ['-t']
                cmd += [qtable, database]
                output = file(os.path.join(savedir, database + '.' + table + '.dump'), 'w+b')
                errors = file(os.path.join(savedir, database + '.' + table + '.dump.log'), 'w')

                jobs.append({'cmd': cmd,
                             'args': {'stdout': output, 'stderr': errors}})

    for job in jobs:
        logger.info("dumping ('%(cmd)s') to '%(dest)s'" % {
            'cmd': ' '.join(job['cmd']),
            'dest': job['args']['stdout'].name
        })

        p = subprocess.Popen(job['cmd'], **job['args'])
        exitcode = p.wait()

        if exitcode != 0:
            logger.error("dump error, see '%(errors)s'" % {'errors': job['args']['stderr'].name})
            sys.exit(1)
        else:
            os.remove(job['args']['stderr'].name)

    run_hook('post-create-database', [savedir], logger=logger, exit_on_error=True)