python utility to manage a tripleo based cloud
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.5 KiB

# Copyright 2017 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
# 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.
from argparse import _StoreAction
import logging
from osc_lib.command import command
from osc_lib import exceptions as oscexc
from tripleo_common.utils import config
from tripleoclient import exceptions
from tripleoclient import utils
class Command(command.Command):
log = logging.getLogger(__name__ + ".Command")
def run(self, parsed_args):
utils.store_cli_param(self.cmd_name, parsed_args)
super(Command, self).run(parsed_args)
except (oscexc.CommandError, exceptions.Base):
except Exception:
self.log.exception("Exception occured while running the command")
def get_ansible_key_and_dir(stack, orchestration):
"""Return the ansible directory and key path.
:oaram stack: Name of a given stack to run against.
:type stack: String
:param orchestration: Orchestration client object.
:type orchestration: Object
:returns: Tuple
key = utils.get_key(stack=stack)
stack_config = config.Config(orchestration)
with utils.TempDirs(chdir=False) as tmp:
return key, tmp
def get_key_pair(self, parsed_args):
"""Autodetect or return a user defined key file.
:param parsed_args: An argparse object.
:type parsed_args: Object
:returns: String
if not parsed_args.overcloud_ssh_key:
key = utils.get_key(
if not key:
raise oscexc.CommandError(
'No key pair found, set the ssh key using'
'the --overcloud-ssh-key switch.'
return key
return parsed_args.overcloud_ssh_key
class Lister(Command, command.Lister):
class ShowOne(Command, command.ShowOne):
class DeprecatedActionStore(_StoreAction):
"""To deprecated an option an store the value"""
log = logging.getLogger(__name__)
def __call__(self, parser, namespace, values, option_string=None):
"""Display the warning message"""
if len(self.option_strings) == 1:
message = 'The option {option} is deprecated, it will be removed'\
' in a future version'.format(
option = ', '.join(self.option_strings)
message = 'The options {option} is deprecated, it will be removed'\
' in a future version'.format(option=option)
super(DeprecatedActionStore, self).__call__(
parser, namespace, values, option_string)