# Copyright 2018 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 from cliff import command from osc_lib.i18n import _ from tripleoclient import constants from tripleoclient import utils # For ansible.cfg generation from tripleo_common.actions import ansible class GenerateAnsibleConfig(command.Command): """Generate the default ansible.cfg for deployments.""" log = logging.getLogger(__name__ + ".GenerateAnsibleConfig") def get_parser(self, prog_name): parser = argparse.ArgumentParser( description=self.get_description(), prog=prog_name, add_help=False ) # TODO(bogdando): drop that once using oslo.privsep parser.add_argument( '--deployment-user', dest='deployment_user', default='stack', help=_('User who executes the tripleo config generate command. ' 'Defaults to stack.') ) # TODO(bogdando): find a better UNDERCLOUD_OUTPUT_DIR constant name # Add more params as far as the imported ansible actions support it parser.add_argument('--output-dir', dest='output_dir', help=_("Directory to output ansible.cfg and " "ansible.log files."), default=constants.UNDERCLOUD_OUTPUT_DIR) return parser def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if utils.get_deployment_user() != parsed_args.deployment_user: self.log.warning( _('The --deployment-user value %s does not ' 'match the user name executing this command!') % parsed_args.deployment_user) ansible.write_default_ansible_cfg(parsed_args.output_dir, parsed_args.deployment_user, ssh_private_key=None)