Lin Yang 834e086e87 Support more arguments for node compose command
Add several new arguments, "--description", "--processor",
"--memory", "--remote-drives", "--local-drives", "--ethernet" to
allow user to specify node composition requirements in details.

Change-Id: I86aa04e3e84d449dc184de45a0cfab46c48ba7f2
2017-08-24 17:42:05 -07:00

58 lines
2.0 KiB
Python

# Copyright 2017 Intel, 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.
#
from cliff import _argparse
from osc_lib.command import command
class Command(command.Command):
def get_parser(self, prog_name):
parser = super(Command, self).get_parser(prog_name)
parser.formatter_class = _SmartHelpFormatter
return parser
class _SmartHelpFormatter(_argparse.HelpFormatter):
"""New smart argparse HelpFormatter
Smart help formatter to output raw help message if it contains newline
and heading whitespaces.
"""
def _split_lines(self, text, width):
lines = text.splitlines() if '\n' in text else [text]
wrap_lines = []
for each_line in lines:
if each_line == '':
# Handle newline case
wrap_lines.append('')
elif each_line.startswith(' '):
# Handle heading whitespaces case
spaces_width = len(each_line) - len(each_line.lstrip())
lines = super(_SmartHelpFormatter, self)._split_lines(
each_line, width - spaces_width)
wrap_lines.extend([' ' * spaces_width + line
for line in lines])
else:
# Handle normal case
wrap_lines.extend(
super(_SmartHelpFormatter, self)._split_lines(
each_line, width)
)
return wrap_lines