
Depends-On: https://review.opendev.org/940561 Change-Id: I691fafc25b377d812d002fae34aef2e0bc8e552a
78 lines
2.4 KiB
Python
Executable File
78 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Copyright (C) 2011-2013 OpenStack Foundation
|
|
#
|
|
# 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.
|
|
|
|
import os
|
|
import yaml
|
|
from urllib.request import urlopen
|
|
from urllib.request import URLError
|
|
|
|
URL = ('https://opendev.org/openstack/project-config/'
|
|
'raw/gerrit/projects.yaml')
|
|
|
|
TMP_HOOKS_PATH = os.environ['TMP_HOOKS_PATH']
|
|
PROJECTS_REPOS = os.path.join(TMP_HOOKS_PATH,
|
|
'source-repository-projects-yaml')
|
|
GIT_BASE = os.environ.get('GIT_BASE', 'https://opendev.org')
|
|
|
|
CUSTOM_PROJECTS_LIST_URL = os.environ.get('DIB_CUSTOM_PROJECTS_LIST_URL')
|
|
|
|
|
|
def get_project_list(url):
|
|
try:
|
|
projects = []
|
|
for f in yaml.safe_load(urlopen(url)):
|
|
# Skip repos that are inactive
|
|
project = f['project']
|
|
dirname = os.path.dirname(project)
|
|
if 'attic' in dirname or dirname == 'stackforge':
|
|
continue
|
|
acl = f.get('acl-config')
|
|
# Ignore retired repositories
|
|
if acl and os.path.basename(acl) == 'retired.config':
|
|
continue
|
|
projects.append(project)
|
|
|
|
return projects
|
|
except URLError:
|
|
print("Could not open project list url: '%s'" % url)
|
|
raise
|
|
|
|
|
|
def main():
|
|
projects = []
|
|
if CUSTOM_PROJECTS_LIST_URL:
|
|
projects = get_project_list(CUSTOM_PROJECTS_LIST_URL)
|
|
|
|
if not projects:
|
|
projects = get_project_list(URL)
|
|
|
|
with open(PROJECTS_REPOS, 'w') as projects_list:
|
|
for project in projects:
|
|
args = dict(
|
|
name=os.path.basename(project),
|
|
location=os.path.join('/opt/git/opendev.org', project),
|
|
url='%s/%s.git' % (GIT_BASE, project),
|
|
ref='*')
|
|
|
|
projects_list.write("%(name)s git %(location)s "
|
|
"%(url)s %(ref)s\n" % args)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|