Another update to component descriptions + colored text output bolding.
This commit is contained in:
@@ -197,19 +197,16 @@ def create_db(cfg, dbname):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the database component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "N/A"
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [DBRuntime.__name__,
|
||||
DBInstaller.__name__,
|
||||
DBUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the db component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -174,19 +174,16 @@ class GlanceInstaller(comp.PythonInstallComponent):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the glance component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [GlanceRuntime.__name__,
|
||||
GlanceInstaller.__name__,
|
||||
GlanceUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the glance component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -209,19 +209,16 @@ class HorizonRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the horizon component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "N/A"
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [HorizonRuntime.__name__,
|
||||
HorizonInstaller.__name__,
|
||||
HorizonUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the horizon component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -190,19 +190,16 @@ def get_shared_params(cfg):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the keystone component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [KeystoneRuntime.__name__,
|
||||
KeystoneInstaller.__name__,
|
||||
KeystoneUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the keystone component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -50,19 +50,16 @@ class KeyStoneClientRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the keystone client component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [KeyStoneClientRuntime.__name__,
|
||||
KeyStoneClientInstaller.__name__,
|
||||
KeyStoneClientUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the keystone client component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -444,19 +444,16 @@ class NovaConf(object):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the nova component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [NovaRuntime.__name__,
|
||||
NovaInstaller.__name__,
|
||||
NovaUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the nova component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -57,19 +57,16 @@ class NovaClientRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the nova client component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [NovaClientRuntime.__name__,
|
||||
NovaClientUninstaller.__name__,
|
||||
NovaClientInstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the nova client component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -80,19 +80,16 @@ class NoVNCRuntime(comp.ProgramRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the nova no-vnc component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [NoVNCRuntime.__name__,
|
||||
NoVNCUninstaller.__name__,
|
||||
NoVNCInstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the no-vnc component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -49,19 +49,16 @@ class OpenstackXRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the openstack x component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [OpenstackXRuntime.__name__,
|
||||
OpenstackXInstaller.__name__,
|
||||
OpenstackXUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the no-vnc component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -201,19 +201,16 @@ class QuantumRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the quantum component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [QuantumRuntime.__name__,
|
||||
QuantumInstaller.__name__,
|
||||
QuantumUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the quantum component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -112,19 +112,16 @@ class RabbitRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the rabbit-mq component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [RabbitRuntime.__name__,
|
||||
RabbitUninstaller.__name__,
|
||||
RabbitInstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the rabbit-mq component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -63,19 +63,16 @@ class SwiftRuntime(comp.EmptyRuntime):
|
||||
|
||||
|
||||
def describe(opts=None):
|
||||
description = """ Module: {module_name}
|
||||
description = """
|
||||
Module: {module_name}
|
||||
Description:
|
||||
Handles actions for the swift component.
|
||||
{description}
|
||||
Component options:
|
||||
{component_opts}
|
||||
Provides:
|
||||
{provides_what}
|
||||
"""
|
||||
params = dict()
|
||||
params['component_opts'] = "TBD"
|
||||
params['module_name'] = __name__
|
||||
provides = [SwiftRuntime.__name__,
|
||||
SwiftInstaller.__name__,
|
||||
SwiftUninstaller.__name__]
|
||||
params['provides_what'] = ", ".join(sorted(provides))
|
||||
return description.format(**params)
|
||||
params['description'] = __doc__ or "Handles actions for the swift component."
|
||||
out = description.format(**params)
|
||||
return out.strip("\n")
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
|
||||
import re
|
||||
|
||||
#requires http://pypi.python.org/pypi/termcolor
|
||||
#but the colors make it worth it :-)
|
||||
from termcolor import colored, cprint
|
||||
|
||||
from devstack import log as logging
|
||||
from devstack import settings
|
||||
from devstack import utils
|
||||
@@ -57,18 +61,10 @@ def log_deps(components):
|
||||
while left_show:
|
||||
c = left_show.pop()
|
||||
deps = settings.get_dependencies(c)
|
||||
dep_str = ""
|
||||
dep_len = len(deps)
|
||||
if dep_len >= 1:
|
||||
dep_str = "component"
|
||||
if dep_len > 1:
|
||||
dep_str += "s"
|
||||
dep_str += ":"
|
||||
elif dep_len == 0:
|
||||
dep_str = "no components."
|
||||
LOG.info("%s depends on %s" % (c, dep_str))
|
||||
dep_str = "depends on:"
|
||||
print(colored(c, "green", attrs=['bold']) + " depends on " + dep_str)
|
||||
for d in deps:
|
||||
LOG.info("\t%s" % (d))
|
||||
print(" " + colored(d, "blue", attrs=['bold']))
|
||||
shown.add(c)
|
||||
for d in deps:
|
||||
if d not in shown and d not in left_show:
|
||||
@@ -86,33 +82,17 @@ def _run_describe_comps(args):
|
||||
components = settings.parse_components(args.get("components"), True)
|
||||
c_keys = sorted(components.keys())
|
||||
for c in c_keys:
|
||||
LOG.info("Component %s {", c)
|
||||
print(colored(c, "green", attrs=['bold']) + " description:")
|
||||
describer = _DESCR_MAP.get(c)
|
||||
info = describer(components.get(c))
|
||||
if info:
|
||||
lines = info.splitlines()
|
||||
for line in lines:
|
||||
if len(line) == 0:
|
||||
continue
|
||||
#do some basic formatting
|
||||
mtch = re.match(r"^(\s*)(.*)$", line)
|
||||
new_line = line
|
||||
if mtch:
|
||||
space_am = len(mtch.group(1)) * 2
|
||||
new_line = " " * space_am + mtch.group(2)
|
||||
LOG.info(new_line)
|
||||
LOG.info("}")
|
||||
print(describer(components.get(c)))
|
||||
|
||||
|
||||
def run(args):
|
||||
prog_name = PROG_NAME
|
||||
if args.get('list_deps'):
|
||||
prog_name += " [DEPS]"
|
||||
if args.get('describe_comp'):
|
||||
prog_name += " [DESCRIBE]"
|
||||
utils.welcome(prog_name)
|
||||
sep = utils.welcome(PROG_NAME)
|
||||
if args.get('list_deps'):
|
||||
_run_list_deps(args)
|
||||
print(sep)
|
||||
if args.get('describe_comp'):
|
||||
_run_describe_comps(args)
|
||||
print(sep)
|
||||
return True
|
||||
|
||||
@@ -291,8 +291,8 @@ def welcome(ident):
|
||||
lower += "|"
|
||||
welcome_header = _get_welcome_stack().strip("\n\r")
|
||||
max_line_len = len(max(welcome_header.splitlines(), key=len))
|
||||
footer = colored(settings.PROG_NICE_NAME, 'green') + \
|
||||
": " + colored(lower, 'blue')
|
||||
footer = colored(settings.PROG_NICE_NAME, 'green', attrs=['bold']) + \
|
||||
": " + colored(lower, 'blue', attrs=['bold'])
|
||||
uncolored_footer = (settings.PROG_NICE_NAME + ": " + lower)
|
||||
if max_line_len - len(uncolored_footer) > 0:
|
||||
#this format string wil center the uncolored text which
|
||||
@@ -301,3 +301,6 @@ def welcome(ident):
|
||||
centered_str = center_text(uncolored_footer, " ", max_line_len)
|
||||
footer = centered_str.replace(uncolored_footer, footer)
|
||||
print((welcome_header + os.linesep + footer))
|
||||
tail_end = "-" * max_line_len
|
||||
print(tail_end)
|
||||
return tail_end
|
||||
|
||||
Reference in New Issue
Block a user