Ejemplo n.º 1
0
def sync_database(root_path, dump_mysql, server=DEFAULT_SERVER,
                  sync_data=False, reset=False, remote=False):
    appcfg = load_app_config(root_path)
    devcfg = load_dev_config(root_path)
    if 'mysql' not in devcfg:
        logger.info("No MySQL configuration found in dev.yaml.")
        return 'succeeded'

    logger.info("Dumping database to %s...", dump_mysql)
    with open(dump_mysql, 'w') as dumpfile:
        devcfg['mysql'].setdefault('use_unicode', False)
        devcfg['mysql'].setdefault('charset', 'utf8')
        conn = MySQLdb.connect(**devcfg['mysql'])
        try:
            struct, data = dumps(dumpfile, conn, sync_data)
            appname = appcfg['application']
        finally:
            conn.close()

    if remote:
        logger.info("Syncing database to servers...")
        try:
            result = verify(appname, struct, data, reset, server)
        except:
            logger.exception('Error occured')
            return 'failed'
        return result
Ejemplo n.º 2
0
def get_app_mysql_config():
    from sheep.util import load_dev_config
    devcfg = load_dev_config(os.environ['SHEEP_APPROOT']) or {}
    cfg = {
        'host': 'localhost',
        'port': 3306,
        'user': getuser(),
        'passwd': '',
        'db': os.environ['SHEEP_APPNAME'],
    }
    cfg.update(devcfg.get('mysql', {}))
    return cfg
Ejemplo n.º 3
0
def dev_main(args):
    root_path = args.root_path or find_app_root()
    devcfg = load_dev_config(root_path)
    if 'mysql' not in devcfg:
        logger.fatal("No mysql defined in dev.yaml")
        return 1

    cfg = devcfg['mysql']

    cmd = ['mysql']
    if 'host' in cfg:
        cmd += ['-h', cfg['host']]
    if 'port' in cfg:
        cmd += ['-P', str(cfg['port'])]
    if 'user' in cfg:
        cmd += ['-u', cfg['user']]
    if 'passwd' in cfg:
        cmd += ['-p%s' % cfg['passwd']]
    cmd += [cfg['db']]

    return call(cmd)
Ejemplo n.º 4
0
def main(args):
    approot = find_app_root()
    devcfg = load_dev_config(approot)
    if not os.path.exists(os.path.join(approot, TEST_YAML)):
        create_test_yaml(approot, devcfg, TEST_YAML)

    if 'mysql' in devcfg:
        sync_database(approot, 'db_dumps.sql', sync_data=False, remote=False)

    if not os.path.exists(os.path.join(approot, 'permdir_test')):
        os.mkdir(os.path.join(approot, 'permdir_test'))

    os.environ['SHEEP_DEV_YAML'] = TEST_YAML

    nosetests = load_entry_point('nose', 'console_scripts', 'nosetests')
    sys.argv = ['sheep test']
    if os.path.exists(os.path.join(approot, 'nose.cfg')):
        sys.argv += ['-c', os.path.join(approot, 'nose.cfg')]
    sys.argv += args.arg
    activate_app(approot)
    return nosetests()
Ejemplo n.º 5
0
#!/usr/bin/python
# encoding: UTF-8

"""API for permanent dir.

Public module variables:

permdir -- a string containing path to the directory holding permanent files.
"""

__all__ = ['permdir']

import os
from sheep.util import find_app_root

approot = os.environ.get('SHEEP_APPROOT') or find_app_root(raises=False) or ''
if os.environ.get('SHEEP_ENV', '').startswith('SDK'):
    from sheep.util import load_dev_config
    devcfg = load_dev_config(approot)
    permdir = os.path.join(approot, devcfg.get('permdir', 'permdir'))
else:
    permdir = os.path.join(approot, 'permdir')