31b83dd2e8
The commands are managed as entry-points so remove ununecessary shebangs. Also lib/re2util.py does not require a shebang as well. zuul_return.py does not have a main and is not supposed to be run directly. Ununecessary shebangs for non executable script causes rpmlint issues. Change-Id: I6015daaa0fe35b6935fcbffca1907c01c9a26134
98 lines
3.4 KiB
Python
98 lines
3.4 KiB
Python
# Copyright 2019 BMW Group
|
|
#
|
|
# 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 logging
|
|
import textwrap
|
|
import zuul.cmd
|
|
from zuul.lib.ansible import AnsibleManager
|
|
|
|
|
|
class ManageAnsible(zuul.cmd.ZuulApp):
|
|
|
|
app_name = 'manage-ansible'
|
|
app_description = textwrap.dedent('''
|
|
Zuul ansible manager.
|
|
|
|
This command installs or upgrades all supported Ansible installations
|
|
so zuul can use them.
|
|
|
|
You can set the following environnment variables
|
|
to install additional packages you might need along with ansible.
|
|
These variables must contain a space separated list of dependencies
|
|
that can be parsed by pip.
|
|
|
|
ANSIBLE_EXTRA_PACKAGES
|
|
Packages to add to every ansible installation.
|
|
|
|
ANSIBLE_<VERSION>_EXTRA_PACKAGES
|
|
Packages to add to a specific version of Ansible. The version must
|
|
be the same as listed in 'zuul-manage-ansible -l' but without
|
|
special characters. e.g. ANSIBLE_27_EXTRA_PACKAGES=myextradep
|
|
''')
|
|
|
|
log = logging.getLogger('zuul.ManageAnsible')
|
|
|
|
def createParser(self):
|
|
parser = super().createParser()
|
|
parser.add_argument('-v', dest='verbose', action='store_true',
|
|
help='verbose output')
|
|
parser.add_argument('-u', dest='upgrade', action='store_true',
|
|
help='upgrade ansible versions')
|
|
parser.add_argument('-l', dest='list_supported', action='store_true',
|
|
help='list supported versions')
|
|
parser.add_argument('--validate', dest='validate',
|
|
action='store_true',
|
|
help='validate installed versions')
|
|
parser.add_argument('-r', dest='install_root', default=None,
|
|
help='root path for ansible venv installations')
|
|
return parser
|
|
|
|
def _setup_logging(self):
|
|
"""Manage ansible logging does not rely on conf file"""
|
|
if self.args.verbose:
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
else:
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
def main(self):
|
|
self.parseArguments()
|
|
try:
|
|
self.readConfig()
|
|
except Exception:
|
|
# This script must be able to run without config so this can be
|
|
# safely ignored here.
|
|
pass
|
|
self._setup_logging()
|
|
|
|
manager = AnsibleManager(runtime_install_root=self.args.install_root)
|
|
|
|
if self.args.list_supported:
|
|
versions = []
|
|
for version, default in manager.getSupportedVersions():
|
|
if default:
|
|
version = version + ' (default)'
|
|
versions.append(version)
|
|
print('\n'.join(versions))
|
|
return
|
|
|
|
if self.args.validate:
|
|
manager.validate()
|
|
return
|
|
|
|
manager.install(upgrade=self.args.upgrade)
|
|
|
|
|
|
def main():
|
|
ManageAnsible().main()
|