0f30e60e96
As part of the move to zuul jobs building images we've discovered we have a couple of scripts that are invoked by python2. Python2 isn't available be default in the test images and python2 is old enough now that we should just use python3. This change updates things to make it so. Co-Authored-By: Clark Boylan <clark.boylan@gmail.com> Change-Id: Ib8692ef1389f80b4af59784d5b89d6dadc349a7c
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()
|