tripleo-repos/plugins/module_utils/tripleo_repos/get_hash/__main__.py

115 lines
3.2 KiB
Python

# Copyright 2021 Red Hat, Inc.
#
# 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 argparse
import logging
import sys
from tripleo_repos.utils import load_logging
from tripleo_repos.get_hash.tripleo_hash_info import TripleOHashInfo
import tripleo_repos.get_hash.exceptions as exc
def _validate_args(parsed_args):
if parsed_args.os_version == 'centos7' and (
parsed_args.component is not None
):
raise exc.TripleOHashInvalidParameter(
'Cannot specify component for centos 7'
)
def main():
load_logging(module_name="tripleo-get-hash")
config = TripleOHashInfo.load_config()
parser = argparse.ArgumentParser(description='tripleo-get-hash.py')
parser.add_argument(
'--component',
help=('Use this to specify a component '
'This is NOT valid for Centos 7.'),
choices=config['tripleo_ci_components'],
)
parser.add_argument(
'--dlrn-url',
help=(
'The URL for the delorean server to use. Defaults to '
'https://trunk.rdoproject.org'
),
)
parser.add_argument(
'--os-version',
default='centos8',
choices=config['os_versions'],
help=('The operating system and version to fetch the build tag for'),
)
parser.add_argument(
'--tag',
default='current-tripleo',
choices=config['rdo_named_tags'],
help=('The known tag to retrieve the hash_info for'),
)
parser.add_argument(
'--release',
default='master',
help=('The release of OpenStack you want the hash info for. '
'Default master'),
choices=config['tripleo_releases'],
)
parser.add_argument(
'--verbose',
action='store_true',
help=('Enable verbose log level for debugging'),
)
args = parser.parse_args()
if args.verbose:
logging.getLogger().setLevel(logging.DEBUG)
logging.debug("Logging level set to DEBUG")
_validate_args(args)
if args.dlrn_url is not None:
logging.debug(
"Overriding configuration dlrn_url. Original value {}. "
"New value {}".format(config['dlrn_url'], args.dlrn_url)
)
config['dlrn_url'] = args.dlrn_url
logging.debug(
"Proceeding with the following configuration: {}".format(config)
)
tripleo_hash_info = TripleOHashInfo(
args.os_version,
args.release,
args.component,
args.tag,
config,
)
print(tripleo_hash_info)
return tripleo_hash_info
def cli_entrypoint():
try:
main()
sys.exit(0)
except KeyboardInterrupt:
logging.info("Exiting on user interrupt")
raise
if __name__ == "__main__":
main()