コード例 #1
0
ファイル: api.py プロジェクト: wifineural/qiskit-bot
def main():
    """Run APP."""
    global CONFIG
    CONFIG = config.load_config(sys.argv[1])
    log_format = ('%(asctime)s %(process)d %(levelname)s '
                  '%(name)s [-] %(message)s')
    logging.basicConfig(level=logging.DEBUG, format=log_format)
    APP.run(debug=True, host='0.0.0.0', port=8281)
コード例 #2
0
ファイル: test_config.py プロジェクト: wifineural/qiskit-bot
 def test_load_config_minimal(self):
     config_text = """
     api_key: 1234567abc
     working_dir: /tmp
     meta_repo: Qiskit/qiskit
     repos:
       - name: qiskit/Qiskit-terra
     """
     mock_open = unittest.mock.mock_open(read_data=config_text)
     with unittest.mock.patch('qiskit_bot.config.open', mock_open):
         res = config.load_config('fake_path')
     self.assertEqual('/tmp', res['working_dir'])
     self.assertEqual('1234567abc', res['api_key'])
     # Meta repo defaults to Qiskit/qiskit
     self.assertEqual('Qiskit/qiskit', res['meta_repo'])
コード例 #3
0
ファイル: api.py プロジェクト: Qiskit/qiskit-bot
def setup():
    """Setup config."""
    global CONFIG
    global META_REPO
    global WEBHOOK
    if not CONFIG:
        CONFIG = config.load_config('/etc/qiskit_bot.yaml')
    log_level = CONFIG.get('log_level', 'INFO')
    default_log_format = ('%(asctime)s: %(process)d %(levelname)s '
                          '%(name)s [-] %(message)s')
    log_format = CONFIG.get('log_format', default_log_format)

    logging.basicConfig(level=log_level, format=log_format)
    if not os.path.isdir(CONFIG['working_dir']):
        os.mkdir(CONFIG['working_dir'])
    if not os.path.isdir(os.path.join(CONFIG['working_dir'], 'lock')):
        os.mkdir(os.path.join(CONFIG['working_dir'], 'lock'))
    for repo in CONFIG['repos']:

        with fasteners.InterProcessLock(
                os.path.join(os.path.join(CONFIG['working_dir'], 'lock'),
                             repo['name'])):
            REPOS[repo['name']] = repos.Repo(CONFIG['working_dir'],
                                             repo['name'],
                                             CONFIG['api_key'],
                                             repo_config=repo)
    # Load the meta repo
    with fasteners.InterProcessLock(
            os.path.join(os.path.join(CONFIG['working_dir'], 'lock'),
                         CONFIG['meta_repo'])):
        repo_config = {'default_branch': CONFIG['meta_repo_default_branch']}
        META_REPO = repos.Repo(CONFIG['working_dir'],
                               CONFIG['meta_repo'],
                               CONFIG['api_key'],
                               repo_config=repo_config)
    # NOTE(mtreinish): This is a workaround until there is a supported method
    # to set a secret post-init. See:
    # https://github.com/bloomberg/python-github-webhook/pull/19
    if CONFIG.get('github_webhook_secret', None):
        secret = CONFIG['github_webhook_secret']
        if not isinstance(secret, bytes):
            secret = secret.encode("utf-8")
        WEBHOOK._secret = secret