Consume jeepyb.
Instead of keeping many of these files directly in the tree, use them from the out-of-tree jeepyb project, which makes them easier to consume for other people who are not us. Change-Id: Id704f2e17dd80709ef63cbbf2c5475a08a835f91 Reviewed-on: https://review.openstack.org/16777 Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Reviewed-by: James E. Blair <corvus@inaugust.com> Approved: James E. Blair <corvus@inaugust.com> Tested-by: Jenkins
This commit is contained in:
parent
3f4bcb45e6
commit
cbc3b43cdc
|
@ -1,94 +0,0 @@
|
|||
#! /usr/bin/env python
|
||||
# Copyright (C) 2011 OpenStack, LLC.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# Github pull requests closer reads a project config file called projects.yaml
|
||||
# It should look like:
|
||||
|
||||
# - homepage: http://openstack.org
|
||||
# team-id: 153703
|
||||
# has-wiki: False
|
||||
# has-issues: False
|
||||
# has-downloads: False
|
||||
# ---
|
||||
# - project: PROJECT_NAME
|
||||
# options:
|
||||
# - has-pull-requests
|
||||
|
||||
# Github authentication information is read from github.secure.config,
|
||||
# which should look like:
|
||||
|
||||
# [github]
|
||||
# username = GITHUB_USERNAME
|
||||
# password = GITHUB_PASSWORD
|
||||
#
|
||||
# or
|
||||
#
|
||||
# [github]
|
||||
# oauth_token = GITHUB_OAUTH_TOKEN
|
||||
|
||||
import ConfigParser
|
||||
import github
|
||||
import os
|
||||
import yaml
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.ERROR)
|
||||
|
||||
PROJECTS_YAML = os.environ.get('PROJECTS_YAML',
|
||||
'/home/gerrit2/projects.yaml')
|
||||
GITHUB_SECURE_CONFIG = os.environ.get('GITHUB_SECURE_CONFIG',
|
||||
'/etc/github/github.secure.config')
|
||||
|
||||
MESSAGE = """Thank you for contributing to OpenStack!
|
||||
|
||||
%(project)s uses Gerrit for code review.
|
||||
|
||||
Please visit http://wiki.openstack.org/GerritWorkflow and follow the instructions there to upload your change to Gerrit.
|
||||
"""
|
||||
|
||||
secure_config = ConfigParser.ConfigParser()
|
||||
secure_config.read(GITHUB_SECURE_CONFIG)
|
||||
(defaults, config) = [config for config in yaml.load_all(open(PROJECTS_YAML))]
|
||||
|
||||
if secure_config.has_option("github", "oauth_token"):
|
||||
ghub = github.Github(secure_config.get("github", "oauth_token"))
|
||||
else:
|
||||
ghub = github.Github(secure_config.get("github", "username"),
|
||||
secure_config.get("github", "password"))
|
||||
|
||||
orgs = ghub.get_user().get_orgs()
|
||||
orgs_dict = dict(zip([o.login.lower() for o in orgs], orgs))
|
||||
for section in config:
|
||||
project = section['project']
|
||||
|
||||
# Make sure we're supposed to close pull requests for this project:
|
||||
if 'options' in section and 'has-pull-requests' in section['options']:
|
||||
continue
|
||||
|
||||
# Find the project's repo
|
||||
project_split = project.split('/', 1)
|
||||
if len(project_split) > 1:
|
||||
repo = orgs_dict[project_split[0].lower()].get_repo(project_split[1])
|
||||
else:
|
||||
repo = ghub.get_user().get_repo(project)
|
||||
|
||||
# Close each pull request
|
||||
pull_requests = repo.get_pulls("open")
|
||||
for req in pull_requests:
|
||||
vars = dict(project=project)
|
||||
issue_data = {"url": repo.url + "/issues/" + str(req.number)}
|
||||
issue = github.Issue.Issue(req._requester, issue_data, completed = True)
|
||||
issue.create_comment(MESSAGE % vars)
|
||||
req.edit(state = "closed")
|
|
@ -7,6 +7,7 @@ class github(
|
|||
$project_password = '',
|
||||
$projects = []
|
||||
) {
|
||||
include jeepyb
|
||||
include pip
|
||||
|
||||
package { 'PyGithub':
|
||||
|
@ -80,20 +81,14 @@ class github(
|
|||
}
|
||||
|
||||
file { '/usr/local/github/scripts':
|
||||
ensure => directory,
|
||||
group => 'root',
|
||||
mode => '0755',
|
||||
owner => 'root',
|
||||
recurse => true,
|
||||
require => File['/usr/local/github'],
|
||||
source => 'puppet:///modules/github/scripts',
|
||||
ensure => absent,
|
||||
}
|
||||
|
||||
cron { 'githubclosepull':
|
||||
command => 'sleep $((RANDOM\%60+90)) && python /usr/local/github/scripts/close_pull_requests.py',
|
||||
command => 'sleep $((RANDOM\%60+90)) && /usr/local/bin/close-pull-requests',
|
||||
minute => '*/5',
|
||||
require => [
|
||||
File['/usr/local/github/scripts'],
|
||||
Class['jeepyb'],
|
||||
Package['python-yaml'],
|
||||
Package['PyGithub'],
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue