From 9a347f80d52746e7bd366f5ece253ec80e1c096e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20M=C3=A1gr?= Date: Wed, 25 Mar 2015 16:55:32 +0100 Subject: [PATCH] Single source of documentation This patch adds feature for parsing docs/packstack.rst file for parameter USAGE values. Change-Id: Iea404e8ade657e82ac1e33ad3697180680c3633e Closes-bug: rhbz#1199847 --- packstack/installer/basedefs.py | 15 +++- packstack/installer/run_setup.py | 2 +- packstack/modules/documentation.py | 83 ++++++++++++++++++ packstack/plugins/amqp_002.py | 24 ++---- packstack/plugins/ceilometer_800.py | 20 +---- packstack/plugins/cinder_250.py | 125 +-------------------------- packstack/plugins/dashboard_500.py | 5 +- packstack/plugins/glance_200.py | 10 +-- packstack/plugins/heat_650.py | 16 +--- packstack/plugins/ironic_275.py | 7 +- packstack/plugins/keystone_100.py | 116 +------------------------ packstack/plugins/manila_255.py | 33 +------- packstack/plugins/mariadb_003.py | 8 +- packstack/plugins/nagios_910.py | 4 +- packstack/plugins/neutron_350.py | 64 +------------- packstack/plugins/nova_300.py | 27 +----- packstack/plugins/prescript_000.py | 126 +--------------------------- packstack/plugins/provision_700.py | 23 +---- packstack/plugins/sahara_800.py | 7 +- packstack/plugins/serverprep_001.py | 37 +------- packstack/plugins/swift_600.py | 19 +---- packstack/plugins/trove_850.py | 11 +-- requirements.txt | 1 + setup.py | 5 +- 24 files changed, 163 insertions(+), 625 deletions(-) create mode 100644 packstack/modules/documentation.py diff --git a/packstack/installer/basedefs.py b/packstack/installer/basedefs.py index f0649c742..62cfa12b3 100644 --- a/packstack/installer/basedefs.py +++ b/packstack/installer/basedefs.py @@ -16,9 +16,10 @@ This module provides all the predefined variables. """ -import os -import sys import datetime +import os +import pkg_resources +import sys import tempfile from .utils import get_current_user @@ -28,7 +29,15 @@ APP_NAME = "Packstack" FILE_YUM_VERSION_LOCK = "/etc/yum/pluginconf.d/versionlock.list" -PACKSTACK_VAR_DIR = "/var/tmp/packstack" +PACKSTACK_SRC_DOC = pkg_resources.resource_filename( + pkg_resources.Requirement.parse('packstack'), 'docs/packstack.rst' +) +if os.path.exists(PACKSTACK_SRC_DOC): + PACKSTACK_DOC = PACKSTACK_SRC_DOC +else: + PACKSTACK_DOC = '/usr/share/packstack/packstack.rst' + +PACKSTACK_VAR_DIR = '/var/tmp/packstack' try: os.mkdir(PACKSTACK_VAR_DIR, 0o700) except OSError: diff --git a/packstack/installer/run_setup.py b/packstack/installer/run_setup.py index 2026a76ea..17ba04dc3 100644 --- a/packstack/installer/run_setup.py +++ b/packstack/installer/run_setup.py @@ -851,7 +851,7 @@ def printOptions(): paramUsage = param.USAGE optionsList = param.OPTION_LIST or "" print("%s" % (("**%s**" % str(cmdOption)).ljust(30))) - print(" %s %s" % (paramUsage, optionsList) + "\n") + print(" %s" % paramUsage + "\n") def plugin_compare(x, y): diff --git a/packstack/modules/documentation.py b/packstack/modules/documentation.py new file mode 100644 index 000000000..b38d0e934 --- /dev/null +++ b/packstack/modules/documentation.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2015 Red Hat, Inc. +# +# Author: Martin Magr +# +# 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 docutils import core + + +# ------------------ helpers to locate option list ------------------ # +def _iter_by_titles(tree): + for i in tree.children: + i = i.asdom() + for child in i.childNodes: + if child.nodeName != 'title': + continue + if child.childNodes and child.childNodes[0].nodeValue: + title = child.childNodes[0].nodeValue + yield title, i + + +def _get_options(tree, section): + for title, node in _iter_by_titles(tree): + if title == section: + return node + + +# --------------------- helper to locate options -------------------- # +def _iter_options(section): + for subsection in section.childNodes: + for subsub in subsection.childNodes: + if subsub.nodeName != 'definition_list': + # TO-DO: log parsing warning + continue + for defitem in subsub.childNodes: + key_node = defitem.getElementsByTagName('strong') + val_node = defitem.getElementsByTagName('paragraph') + if not key_node or not val_node: + # TO-DO: log parsing warning + continue + key_node = key_node[0].childNodes[0] + val_node = val_node[0].childNodes[0] + yield key_node.nodeValue, val_node.nodeValue + + +# ----------------------------- interface --------------------------- # +_rst_cache = {} + + +def update_params_usage(path, params, opt_title='OPTIONS', sectioned=True): + """Updates params dict with USAGE texts parsed from given rst file.""" + def _update(section, rst): + for param in section: + if param['CONF_NAME'] not in rst: + # TO-DO: log warning + continue + param['USAGE'] = rst[param['CONF_NAME']] + + if not _rst_cache: + tree = core.publish_doctree( + source=open(path).read().decode('utf-8'), source_path=path + ) + for key, value in _iter_options(_get_options(tree, opt_title)): + _rst_cache.setdefault(key, value) + + if sectioned: + for section in params.values(): + _update(section, _rst_cache) + else: + _update(params, _rst_cache) diff --git a/packstack/plugins/amqp_002.py b/packstack/plugins/amqp_002.py index f89e89fce..b2808baf0 100644 --- a/packstack/plugins/amqp_002.py +++ b/packstack/plugins/amqp_002.py @@ -16,11 +16,13 @@ Installs and configures AMQP """ +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import processors from packstack.installer import utils from packstack.modules.common import filtered_hosts +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources from packstack.modules.ospluginutils import getManifestTemplate @@ -34,8 +36,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): params = [ {"CMD_OPTION": "amqp-backend", - "USAGE": ("Set the AMQP service backend. Allowed values are: " - "qpid, rabbitmq"), "PROMPT": "Set the AMQP service backend", "OPTION_LIST": ["qpid", "rabbitmq"], "VALIDATORS": [validators.validate_options], @@ -49,8 +49,6 @@ def initConfig(controller): "DEPRECATES": ['CONFIG_AMQP_SERVER']}, {"CMD_OPTION": "amqp-host", - "USAGE": ("The IP address of the server on which to install the " - "AMQP service"), "PROMPT": "Enter the IP address of the AMQP service", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ssh], @@ -63,7 +61,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-enable-ssl", - "USAGE": "Enable SSL for the AMQP service", "PROMPT": "Enable SSL for the AMQP service?", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -76,7 +73,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-enable-auth", - "USAGE": "Enable Authentication for the AMQP service", "PROMPT": "Enable Authentication for the AMQP service?", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -88,6 +84,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "AMQP", "DESCRIPTION": "AMQP Config parameters", "PRE_CONDITION": False, @@ -98,8 +95,6 @@ def initConfig(controller): params = [ {"CMD_OPTION": "amqp-nss-certdb-pw", - "USAGE": ("The password for the NSS certificate database of the AMQP " - "service"), "PROMPT": "Enter the password for NSS certificate database", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -113,8 +108,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-ssl-port", - "USAGE": ("The port in which the AMQP service listens to SSL " - "connections"), "PROMPT": "Enter the SSL port for the AMQP service", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -127,8 +120,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-ssl-cacert-file", - "USAGE": ("The filename of the CAcertificate that the AMQP service " - "is going to use for verification"), "PROMPT": ("Enter the filename of the SSL CAcertificate for the AMQP" " service"), "OPTION_LIST": [], @@ -142,8 +133,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-ssl-cert-file", - "USAGE": ("The filename of the certificate that the AMQP service " - "is going to use"), "PROMPT": ("Enter the filename of the SSL certificate for the AMQP " "service"), "OPTION_LIST": [], @@ -157,8 +146,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-ssl-key-file", - "USAGE": ("The filename of the private key that the AMQP service " - "is going to use"), "PROMPT": "Enter the private key filename", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -171,7 +158,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-ssl-self-signed", - "USAGE": "Auto Generates self signed SSL certificate and key", "PROMPT": "Generate Self Signed SSL Certificate", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_not_empty], @@ -183,6 +169,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "AMQPSSL", "DESCRIPTION": "AMQP Config SSL parameters", "PRE_CONDITION": "CONFIG_AMQP_ENABLE_SSL", @@ -193,7 +180,6 @@ def initConfig(controller): params = [ {"CMD_OPTION": "amqp-auth-user", - "USAGE": "User for amqp authentication", "PROMPT": "Enter the user for amqp authentication", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -206,7 +192,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "amqp-auth-password", - "USAGE": "Password for user authentication", "PROMPT": "Enter the password for user authentication", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_not_empty], @@ -219,6 +204,7 @@ def initConfig(controller): "NEED_CONFIRM": True, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "AMQPAUTH", "DESCRIPTION": "AMQP Config Athentication parameters", "PRE_CONDITION": "CONFIG_AMQP_ENABLE_AUTH", diff --git a/packstack/plugins/ceilometer_800.py b/packstack/plugins/ceilometer_800.py index c27161b3e..b4ad91223 100644 --- a/packstack/plugins/ceilometer_800.py +++ b/packstack/plugins/ceilometer_800.py @@ -18,10 +18,13 @@ Installs and configures Ceilometer import uuid +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors from packstack.installer.utils import split_hosts + +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -38,7 +41,6 @@ def initConfig(controller): "CEILOMETER": [ {"CONF_NAME": "CONFIG_CEILOMETER_SECRET", "CMD_OPTION": "ceilometer-secret", - "USAGE": "Secret key for signing metering messages", "PROMPT": "Enter the Ceilometer secret key", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -51,8 +53,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_CEILOMETER_KS_PW", "CMD_OPTION": "ceilometer-ks-passwd", - "USAGE": ("The password to use for Ceilometer to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Ceilometer Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -66,7 +66,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_CEILOMETER_COORDINATION_BACKEND", "CMD_OPTION": "ceilometer-coordination-backend", - "USAGE": "Backend driver for group membership coordination", "PROMPT": "Enter the coordination driver", "OPTION_LIST": ['redis', 'none'], "VALIDATORS": [validators.validate_options], @@ -79,8 +78,6 @@ def initConfig(controller): "MONGODB": [ {"CMD_OPTION": "mongodb-host", - "USAGE": ("The IP address of the server on which to install " - "MongoDB"), "PROMPT": "Enter the IP address of the MongoDB server", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ssh], @@ -94,8 +91,6 @@ def initConfig(controller): ], "REDIS": [ {"CMD_OPTION": "redis-master-host", - "USAGE": ("The IP address of the server on which to install " - "redis master server"), "PROMPT": "Enter the IP address of the redis master server", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ssh], @@ -108,7 +103,6 @@ def initConfig(controller): "CONDITION": False, "DEPRECATES": ["CONFIG_REDIS_HOST"]}, {"CMD_OPTION": "redis-port", - "USAGE": "The port on which the redis server(s) listens", "PROMPT": "Enter the port of the redis server(s)", "OPTION_LIST": [], "VALIDATORS": [validators.validate_port], @@ -120,7 +114,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-ha", - "USAGE": "Should redis try to use HA", "PROMPT": "Should redis try to use HA?", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -132,7 +125,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-slaves", - "USAGE": "The hosts on which to install redis slaves", "PROMPT": "Enter the IP addresses of the redis slave servers", "OPTION_LIST": [], "VALIDATORS": [validators.validate_multi_ssh], @@ -144,7 +136,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-sentinels", - "USAGE": "The hosts on which to install redis sentinel servers", "PROMPT": "Enter the IP addresses of the redis sentinel servers", "OPTION_LIST": [], "VALIDATORS": [validators.validate_multi_ssh], @@ -156,7 +147,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-sentinel-contact", - "USAGE": "The host to configure as the coordination sentinel", "PROMPT": "Enter the IP address of the coordination redis sentinel", "OPTION_LIST": [], @@ -169,7 +159,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-sentinel-port", - "USAGE": "The port on which redis sentinel servers listen", "PROMPT": ("Enter the port on which the redis sentinel servers" " listen"), "OPTION_LIST": [], @@ -182,7 +171,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-sentinel-quorum", - "USAGE": "The quorum value for redis sentinel servers", "PROMPT": ( "Enter the quorum value for the redis sentinel servers"), "OPTION_LIST": [], @@ -195,7 +183,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "redis-sentinel-master-name", - "USAGE": "The name of the master server watched by the sentinel", "PROMPT": ( "Enter the logical name of the master server"), "OPTION_LIST": [r'[a-z]+'], @@ -209,6 +196,7 @@ def initConfig(controller): "CONDITION": False}, ], } + update_params_usage(basedefs.PACKSTACK_DOC, ceilometer_params) ceilometer_groups = [ {"GROUP_NAME": "CEILOMETER", diff --git a/packstack/plugins/cinder_250.py b/packstack/plugins/cinder_250.py index 294223c62..98ffc17e8 100644 --- a/packstack/plugins/cinder_250.py +++ b/packstack/plugins/cinder_250.py @@ -18,6 +18,7 @@ Installs and configures Cinder import re +from packstack.installer import basedefs from packstack.installer import exceptions from packstack.installer import processors from packstack.installer import validators @@ -25,7 +26,7 @@ from packstack.installer.utils import split_hosts from packstack.installer import utils - +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -44,7 +45,6 @@ def initConfig(controller): conf_params = { "CINDER": [ {"CMD_OPTION": "cinder-db-passwd", - "USAGE": "The password to use for the Cinder to access DB", "PROMPT": "Enter the password for the Cinder DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -58,8 +58,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "cinder-ks-passwd", - "USAGE": ("The password to use for the Cinder to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Cinder Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -73,8 +71,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "cinder-backend", - "USAGE": ("The Cinder backend to use, valid options are: lvm, " - "gluster, nfs, vmdk, netapp"), "PROMPT": "Enter the Cinder backend to be configured", "OPTION_LIST": ["lvm", "gluster", "nfs", "vmdk", "netapp"], "VALIDATORS": [validators.validate_options], @@ -89,10 +85,6 @@ def initConfig(controller): "CINDERVOLUMECREATE": [ {"CMD_OPTION": "cinder-volumes-create", - "USAGE": ("Create Cinder's volumes group. This should only be " - "done for testing on a proof-of-concept installation " - "of Cinder. This will create a file-backed volume group" - " and is not suitable for production usage."), "PROMPT": ("Should Cinder's volumes group be created (for " "proof-of-concept installation)?"), "OPTION_LIST": ["y", "n"], @@ -108,9 +100,6 @@ def initConfig(controller): "CINDERVOLUMESIZE": [ {"CMD_OPTION": "cinder-volumes-size", - "USAGE": ("Cinder's volumes group size. Note that actual volume " - "size will be extended with 3% more space for VG " - "metadata."), "PROMPT": "Enter Cinder's volumes group usable size", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -125,9 +114,6 @@ def initConfig(controller): "CINDERGLUSTERMOUNTS": [ {"CMD_OPTION": "cinder-gluster-mounts", - "USAGE": ("A single or comma separated list of gluster volume " - "shares to mount, eg: ip-address:/vol-name, " - "domain:/vol-name "), "PROMPT": ("Enter a single or comma separated list of gluster " "volume shares to use with Cinder"), "OPTION_LIST": ["^([\d]{1,3}\.){3}[\d]{1,3}:/.*", @@ -145,8 +131,6 @@ def initConfig(controller): "CINDERNFSMOUNTS": [ {"CMD_OPTION": "cinder-nfs-mounts", - "USAGE": ("A single or comma seprated list of NFS exports to " - "mount, eg: ip-address:/export-name "), "PROMPT": ("Enter a single or comma seprated list of NFS exports " "to use with Cinder"), "OPTION_LIST": ["^([\d]{1,3}\.){3}[\d]{1,3}:/.*"], @@ -163,8 +147,6 @@ def initConfig(controller): "CINDERNETAPPMAIN": [ {"CMD_OPTION": "cinder-netapp-login", - "USAGE": ("(required) Administrative user account name used to " - "access the storage system or proxy server. "), "PROMPT": ("Enter a NetApp login"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -177,8 +159,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-password", - "USAGE": ("(required) Password for the administrative user " - "account specified in the netapp_login parameter."), "PROMPT": ("Enter a NetApp password"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -191,8 +171,6 @@ def initConfig(controller): "NEED_CONFIRM": True, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-hostname", - "USAGE": ("(required) The hostname (or IP address) for the " - "storage system or proxy server."), "PROMPT": ("Enter a NetApp hostname"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -205,12 +183,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-server-port", - "USAGE": ("(optional) The TCP port to use for communication with " - "ONTAPI on the storage system. Traditionally, port 80 " - "is used for HTTP and port 443 is used for HTTPS; " - "however, this value should be changed if an alternate " - "port has been configured on the storage system or " - "proxy server. Defaults to 80."), "PROMPT": ("Enter a NetApp server port"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_port], @@ -223,11 +195,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-storage-family", - "USAGE": ("(optional) The storage family type used on the storage" - " system; valid values are ontap_7mode for using Data " - "ONTAP operating in 7-Mode or ontap_cluster for using " - "clustered Data ONTAP, or eseries for NetApp E-Series. " - "Defaults to %s." % NETAPP_DEFAULT_STORAGE_FAMILY), "PROMPT": ("Enter a NetApp storage family"), "OPTION_LIST": ["ontap_7mode", "ontap_cluster", "eseries"], "VALIDATORS": [validators.validate_options], @@ -240,10 +207,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-transport-type", - "USAGE": ("(optional) The transport protocol used when " - "communicating with ONTAPI on the storage system or " - "proxy server. Valid values are http or https. " - "Defaults to http."), "PROMPT": ("Enter a NetApp transport type"), "OPTION_LIST": ["http", "https"], "VALIDATORS": [validators.validate_options], @@ -256,10 +219,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-storage-protocol", - "USAGE": ("(optional) The storage protocol to be used on the data" - " path with the storage system; valid values are iscsi " - "or nfs. " - "Defaults to %s." % NETAPP_DEFAULT_STORAGE_PROTOCOL), "PROMPT": ("Enter a NetApp storage protocol"), "OPTION_LIST": ["iscsi", "nfs"], "VALIDATORS": [validators.validate_options], @@ -275,11 +234,6 @@ def initConfig(controller): "CINDERNETAPPONTAPISCSI": [ {"CMD_OPTION": "cinder-netapp-size-multiplier", - "USAGE": ("(optional) The quantity to be multiplied by the " - "requested volume size to ensure enough space is " - "available on the virtual storage server (Vserver)" - " to fulfill the volume creation request. " - "Defaults to 1.0."), "PROMPT": ("Enter a NetApp size multiplier"), "OPTION_LIST": [""], "VALIDATORS": [], @@ -295,13 +249,6 @@ def initConfig(controller): "CINDERNETAPPNFS": [ {"CMD_OPTION": "cinder-netapp-expiry-thres-minutes", - "USAGE": ("(optional) This parameter specifies the threshold for " - "last access time for images in the NFS image cache. " - "When a cache cleaning cycle begins, images in the " - "cache that have not been accessed in the last M " - "minutes, where M is the value of this parameter, will " - "be deleted from the cache to create free space on the " - "NFS share. Defaults to 720."), "PROMPT": ("Enter a threshold"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_integer], @@ -314,10 +261,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-thres-avl-size-perc-start", - "USAGE": ("(optional) If the percentage of available space for an" - " NFS share has dropped below the value specified by " - "this parameter, the NFS image cache will be cleaned. " - "Defaults to 20"), "PROMPT": ("Enter a value"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_integer], @@ -330,13 +273,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-thres-avl-size-perc-stop", - "USAGE": ("(optional) When the percentage of available space on " - "an NFS share has reached the percentage specified by " - "this parameter, the driver will stop clearing files " - "from the NFS image cache that have not been accessed " - "in the last M minutes, where M is the value of the " - "expiry_thres_minutes parameter. " - "Defaults to 60."), "PROMPT": ("Enter a value"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_integer], @@ -349,9 +285,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-nfs-shares", - "USAGE": ("(optional) Single or comma-separated list of NetApp NFS shares " - "for Cinder to use. Format: ip-address:/export-name" - " Defaults to ''."), "PROMPT": ("Enter a single or comma-separated list of NetApp NFS shares"), "OPTION_LIST": [""], "VALIDATORS": [], @@ -364,8 +297,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-nfs-shares-config", - "USAGE": ("(optional) File with the list of available NFS shares." - " Defaults to '/etc/cinder/shares.conf'."), "PROMPT": ("Enter a NetApp NFS share config file"), "OPTION_LIST": [""], "VALIDATORS": [], @@ -381,13 +312,6 @@ def initConfig(controller): "CINDERNETAPPISCSI7MODE": [ {"CMD_OPTION": "cinder-netapp-volume-list", - "USAGE": ("(optional) This parameter is only utilized when the " - "storage protocol is configured to use iSCSI. This " - "parameter is used to restrict provisioning to the " - "specified controller volumes. Specify the value of " - "this parameter to be a comma separated list of NetApp " - "controller volume names to be used for provisioning. " - "Defaults to ''."), "PROMPT": ("Enter a NetApp volume list"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -400,14 +324,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-vfiler", - "USAGE": ("(optional) The vFiler unit on which provisioning of " - "block storage volumes will be done. This parameter is " - "only used by the driver when connecting to an instance" - " with a storage family of Data ONTAP operating in " - "7-Mode and the storage protocol selected is iSCSI. " - "Only use this parameter when utilizing the MultiStore " - "feature on the NetApp storage system. " - "Defaults to ''."), "PROMPT": ("Enter a NetApp vFiler"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -423,19 +339,6 @@ def initConfig(controller): "CINDERNETAPPVSERVER": [ {"CMD_OPTION": "cinder-netapp-vserver", - "USAGE": ("(optional) This parameter specifies the virtual " - "storage server (Vserver) name on the storage cluster " - "on which provisioning of block storage volumes should " - "occur. If using the NFS storage protocol, this " - "parameter is mandatory for storage service catalog " - "support (utilized by Cinder volume type extra_specs " - "support). If this parameter is specified, the exports " - "belonging to the Vserver will only be used for " - "provisioning in the future. Block storage volumes on " - "exports not belonging to the Vserver specified by this" - " parameter will " - "continue to function normally. " - "Defaults to ''."), "PROMPT": ("Enter a NetApp Vserver"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -451,13 +354,6 @@ def initConfig(controller): "CINDERNETAPPESERIES": [ {"CMD_OPTION": "cinder-netapp-controller-ips", - "USAGE": ("(optional) This option is only utilized when the " - "storage family is configured to eseries. This option " - "is used to restrict provisioning to the specified " - "controllers. Specify the value of this option to be a " - "comma separated list of controller hostnames or IP " - "addresses to be used for provisioning. " - "Defaults to ''."), "PROMPT": ("Enter a value"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_multi_ping], @@ -470,9 +366,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-sa-password", - "USAGE": ("(optional) Password for the NetApp E-Series storage " - "array. " - "Defaults to ''."), "PROMPT": ("Enter a password"), "OPTION_LIST": [""], "VALIDATORS": [], @@ -485,13 +378,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-webservice-path", - "USAGE": ("(optional) This option is used to specify the path to " - "the E-Series proxy application on a proxy server. The " - "value is combined with the value of the " - "netapp_transport_type, netapp_server_hostname, and " - "netapp_server_port options to create the URL used by " - "the driver to connect to the proxy application. " - "Defaults to '/devmgr/v2'."), "PROMPT": ("Enter a path"), "OPTION_LIST": ["^[/].*$"], "VALIDATORS": [validators.validate_regexp], @@ -504,12 +390,6 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, {"CMD_OPTION": "cinder-netapp-storage-pools", - "USAGE": ("(optional) This option is used to restrict " - "provisioning to the specified storage pools. Only " - "dynamic disk pools are currently supported. Specify " - "the value of this option to be a comma separated list " - "of disk pool names to be used for provisioning. " - "Defaults to ''."), "PROMPT": ("Enter a value"), "OPTION_LIST": [""], "VALIDATORS": [], @@ -523,6 +403,7 @@ def initConfig(controller): "CONDITION": False}, ] } + update_params_usage(basedefs.PACKSTACK_DOC, conf_params) conf_groups = [ {"GROUP_NAME": "CINDER", diff --git a/packstack/plugins/dashboard_500.py b/packstack/plugins/dashboard_500.py index 3e87af391..a18c90857 100644 --- a/packstack/plugins/dashboard_500.py +++ b/packstack/plugins/dashboard_500.py @@ -19,10 +19,12 @@ Installs and configures OpenStack Horizon import os import uuid +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import exceptions from packstack.installer import utils +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import getManifestTemplate @@ -35,7 +37,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): params = [ {"CMD_OPTION": "os-horizon-ssl", - "USAGE": "To set up Horizon communication over https set this to 'y'", "PROMPT": "Would you like to set up Horizon communication over https", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -47,6 +48,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "OSHORIZON", "DESCRIPTION": "OpenStack Horizon Config parameters", "PRE_CONDITION": "CONFIG_HORIZON_INSTALL", @@ -104,6 +106,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "OSSSL", "DESCRIPTION": "SSL Config parameters", "PRE_CONDITION": "CONFIG_HORIZON_SSL", diff --git a/packstack/plugins/glance_200.py b/packstack/plugins/glance_200.py index 88b0a9a3a..426e02b76 100644 --- a/packstack/plugins/glance_200.py +++ b/packstack/plugins/glance_200.py @@ -16,10 +16,12 @@ Installs and configures Glance """ +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import processors from packstack.installer import utils +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -34,7 +36,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): params = [ {"CMD_OPTION": "glance-db-passwd", - "USAGE": "The password to use for the Glance to access DB", "PROMPT": "Enter the password for the Glance DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -48,8 +49,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "glance-ks-passwd", - "USAGE": ("The password to use for the Glance to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Glance Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -63,10 +62,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "glance-backend", - "USAGE": ("Glance storage backend controls how Glance stores disk " - "images. Supported values: file, swift. Note that Swift " - "installation have to be enabled to have swift backend " - "working. Otherwise Packstack will fallback to 'file'."), "PROMPT": "Glance storage backend", "OPTION_LIST": ["file", "swift"], "VALIDATORS": [validators.validate_options], @@ -79,6 +74,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "GLANCE", "DESCRIPTION": "Glance Config parameters", "PRE_CONDITION": "CONFIG_GLANCE_INSTALL", diff --git a/packstack/plugins/heat_650.py b/packstack/plugins/heat_650.py index 073802efe..f07fe523d 100644 --- a/packstack/plugins/heat_650.py +++ b/packstack/plugins/heat_650.py @@ -18,10 +18,12 @@ Installs and configures Heat import uuid +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -36,8 +38,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): parameters = [ {"CMD_OPTION": "os-heat-mysql-password", - "USAGE": ('The password used by Heat user to authenticate against ' - 'DB'), "PROMPT": "Enter the password for the Heat DB user", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -51,8 +51,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "heat-auth-encryption-key", - "USAGE": ("The encryption key to use for authentication info " - "in database (16, 24, or 32 chars)"), "PROMPT": ("Enter the authentication key for Heat to use for " "authenticate info in database (16, 24, or 32 chars)"), "OPTION_LIST": [], @@ -66,8 +64,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-ks-passwd", - "USAGE": ("The password to use for the Heat to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Heat Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -81,8 +77,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-cloudwatch-install", - "USAGE": ("Set to 'y' if you would like Packstack to install Heat " - "CloudWatch API"), "PROMPT": "Should Packstack install Heat CloudWatch API", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -95,8 +89,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-cfn-install", - "USAGE": ("Set to 'y' if you would like Packstack to install Heat " - "CloudFormation API"), "PROMPT": "Should Packstack install Heat CloudFormation API", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -109,7 +101,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-domain", - "USAGE": "Name of Keystone domain for Heat", "PROMPT": "Enter name of Keystone domain for Heat", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -122,7 +113,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-domain-admin", - "USAGE": "Name of Keystone domain admin user for Heat", "PROMPT": "Enter name of Keystone domain admin user for Heat", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -135,7 +125,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-domain-password", - "USAGE": "Password for Keystone domain admin user for Heat", "PROMPT": "Enter password for Keystone domain admin user for Heat", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -148,6 +137,7 @@ def initConfig(controller): "NEED_CONFIRM": True, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, parameters, sectioned=False) group = {"GROUP_NAME": "Heat", "DESCRIPTION": "Heat Config parameters", "PRE_CONDITION": "CONFIG_HEAT_INSTALL", diff --git a/packstack/plugins/ironic_275.py b/packstack/plugins/ironic_275.py index 962ea78ce..2b83d6b3e 100644 --- a/packstack/plugins/ironic_275.py +++ b/packstack/plugins/ironic_275.py @@ -16,10 +16,12 @@ Installs and configures Ironic """ +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -36,7 +38,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_IRONIC_DB_PW", "CMD_OPTION": "os-ironic-db-passwd", "PROMPT": "Enter the password for the Ironic DB user", - "USAGE": "The password to use for the Ironic DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], "DEFAULT_VALUE": "PW_PLACEHOLDER", @@ -49,8 +50,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_IRONIC_KS_PW", "CMD_OPTION": "os-ironic-ks-passwd", - "USAGE": ("The password to use for Ironic to authenticate " - "with Keystone"), "PROMPT": "Enter the password for Ironic Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -62,7 +61,7 @@ def initConfig(controller): "NEED_CONFIRM": True, "CONDITION": False}, ] - + update_params_usage(basedefs.PACKSTACK_DOC, ironic_params, sectioned=False) ironic_group = {"GROUP_NAME": "IRONIC", "DESCRIPTION": "Ironic Options", "PRE_CONDITION": "CONFIG_IRONIC_INSTALL", diff --git a/packstack/plugins/keystone_100.py b/packstack/plugins/keystone_100.py index adf4e0854..fa484eef8 100644 --- a/packstack/plugins/keystone_100.py +++ b/packstack/plugins/keystone_100.py @@ -18,10 +18,12 @@ Installs and configures Keystone import uuid +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import processors from packstack.installer import utils +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources from packstack.modules.ospluginutils import getManifestTemplate @@ -36,7 +38,6 @@ def initConfig(controller): keystone_params = { "KEYSTONE": [ # base keystone options {"CMD_OPTION": "keystone-db-passwd", - "USAGE": "The password to use for the Keystone to access DB", "PROMPT": "Enter the password for the Keystone DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -50,7 +51,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-region", - "USAGE": "Region name", "PROMPT": "Region name", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -63,7 +63,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-admin-token", - "USAGE": "The token to use for the Keystone service api", "PROMPT": "The token to use for the Keystone service api", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -76,7 +75,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-admin-passwd", - "USAGE": "The password to use for the Keystone admin user", "PROMPT": "Enter the password for the Keystone admin user", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -90,7 +88,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-demo-passwd", - "USAGE": "The password to use for the Keystone demo user", "PROMPT": "Enter the password for the Keystone demo user", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -104,7 +101,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-api-version", - "USAGE": "Keystone API version string", "PROMPT": "Enter the Keystone API version string.", "OPTION_LIST": ['v2.0', 'v3'], "VALIDATORS": [validators.validate_options], @@ -117,7 +113,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-token-format", - "USAGE": "Keystone token format. Use either UUID or PKI", "PROMPT": "Enter the Keystone token format.", "OPTION_LIST": ['UUID', 'PKI'], "VALIDATORS": [validators.validate_options], @@ -130,9 +125,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-service-name", - "USAGE": ( - "Name of service to use to run keystone (keystone or httpd)" - ), "PROMPT": "Enter the Keystone service name.", "OPTION_LIST": ['keystone', 'httpd'], "VALIDATORS": [validators.validate_options], @@ -145,7 +137,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-identity-backend", - "USAGE": "Type of identity backend (sql or ldap)", "PROMPT": "Enter the Keystone identity backend type.", "OPTION_LIST": ['sql', 'ldap'], "VALIDATORS": [validators.validate_options], @@ -160,7 +151,6 @@ def initConfig(controller): "KEYSTONE_LDAP": [ # keystone ldap identity backend options {"CMD_OPTION": "keystone-ldap-url", - "USAGE": "Keystone LDAP backend URL", "PROMPT": "Enter the Keystone LDAP backend URL.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ldap_url], @@ -173,11 +163,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-dn", - "USAGE": ( - "Keystone LDAP backend user DN. Used to bind to the LDAP " - "server when the LDAP server does not allow anonymous " - "authentication." - ), "PROMPT": "Enter the Keystone LDAP user DN.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ldap_dn], @@ -190,7 +175,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-password", - "USAGE": "Keystone LDAP backend password for user DN", "PROMPT": "Enter the Keystone LDAP user password.", "OPTION_LIST": [], "VALIDATORS": [], @@ -204,7 +188,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-suffix", - "USAGE": "Keystone LDAP backend base suffix", "PROMPT": "Enter the Keystone LDAP suffix.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty, @@ -218,7 +201,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-query-scope", - "USAGE": "Keystone LDAP backend query scope (base, one, sub)", "PROMPT": "Enter the Keystone LDAP query scope.", "OPTION_LIST": ['base', 'one', 'sub'], "VALIDATORS": [validators.validate_options], @@ -231,7 +213,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-page-size", - "USAGE": "Keystone LDAP backend query page size", "PROMPT": "Enter the Keystone LDAP query page size.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_integer], @@ -244,7 +225,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-subtree", - "USAGE": "Keystone LDAP backend user subtree", "PROMPT": "Enter the Keystone LDAP user subtree.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty, @@ -258,7 +238,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-filter", - "USAGE": "Keystone LDAP backend user query filter", "PROMPT": "Enter the Keystone LDAP user query filter.", "OPTION_LIST": [], "VALIDATORS": [], @@ -271,7 +250,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-objectclass", - "USAGE": "Keystone LDAP backend user objectclass", "PROMPT": "Enter the Keystone LDAP user objectclass.", "OPTION_LIST": [], "VALIDATORS": [], @@ -284,7 +262,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-id-attribute", - "USAGE": "Keystone LDAP backend user ID attribute", "PROMPT": "Enter the Keystone LDAP user ID attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -297,7 +274,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-name-attribute", - "USAGE": "Keystone LDAP backend user name attribute", "PROMPT": "Enter the Keystone LDAP user name attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -310,7 +286,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-mail-attribute", - "USAGE": "Keystone LDAP backend user email address attribute", "PROMPT": "Enter the Keystone LDAP user email address attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -323,7 +298,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-enabled-attribute", - "USAGE": "Keystone LDAP backend user enabled attribute", "PROMPT": "Enter the Keystone LDAP user enabled attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -336,10 +310,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-enabled-mask", - "USAGE": ( - "Keystone LDAP backend - bit mask applied to " - "user enabled attribute" - ), "PROMPT": "Enter the Keystone LDAP user enabled mask.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_integer], @@ -352,10 +322,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-enabled-default", - "USAGE": ( - "Keystone LDAP backend - value of enabled attribute which " - "indicates user is enabled" - ), "PROMPT": "Enter the Keystone LDAP user enabled default.", "OPTION_LIST": [], "VALIDATORS": [], @@ -368,7 +334,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-enabled-invert", - "USAGE": "Keystone LDAP backend - users are disabled not enabled", "PROMPT": "Enter the Keystone LDAP user enabled invert (n or y).", "OPTION_LIST": ['n', 'y'], "VALIDATORS": [validators.validate_options], @@ -381,10 +346,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-attribute-ignore", - "USAGE": ( - "Comma separated list of attributes stripped " - "from user entry upon update" - ), "PROMPT": ( "Enter the comma separated Keystone LDAP user " "attributes to ignore." @@ -399,10 +360,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-default-project-id-attribute", - "USAGE": ( - "Keystone LDAP attribute mapped to default_project_id " - "for users" - ), "PROMPT": ( "Enter the Keystone LDAP user default_project_id attribute." ), @@ -417,11 +374,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-allow-create", - "USAGE": ( - "Set to 'y' if you want to be able to create Keystone " - "users through the Keystone interface. Set to 'n' if you " - "will create directly in the LDAP backend." - ), "PROMPT": ( "Do you want to allow user create through Keystone (n or y)." ), @@ -436,11 +388,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-allow-update", - "USAGE": ( - "Set to 'y' if you want to be able to update Keystone " - "users through the Keystone interface. Set to 'n' if you " - "will update directly in the LDAP backend." - ), "PROMPT": ( "Do you want to allow user update through Keystone (n or y)." ), @@ -455,11 +402,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-allow-delete", - "USAGE": ( - "Set to 'y' if you want to be able to delete Keystone " - "users through the Keystone interface. Set to 'n' if you " - "will delete directly in the LDAP backend." - ), "PROMPT": ( "Do you want to allow user delete through Keystone (n or y)." ), @@ -474,7 +416,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-pass-attribute", - "USAGE": "Keystone LDAP attribute mapped to password", "PROMPT": "Enter the Keystone LDAP user password attribute.", "OPTION_LIST": [], "DEFAULT_VALUE": "", @@ -486,10 +427,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-enabled-emulation-dn", - "USAGE": ( - "DN of the group entry to hold enabled users when " - "using enabled emulation." - ), "PROMPT": "Enter the Keystone LDAP enabled emulation DN.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ldap_dn], @@ -502,13 +439,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-user-additional-attribute-mapping", - "USAGE": ( - 'List of additional LDAP attributes used for mapping ' - 'additional attribute mappings for users. Attribute ' - 'mapping format is :, where ' - 'ldap_attr is the attribute in the LDAP entry and ' - 'user_attr is the Identity API attribute.' - ), "PROMPT": ( "Enter the comma separated Keystone LDAP user additional " "attribute mappings in the form " @@ -525,7 +455,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-subtree", - "USAGE": "Keystone LDAP backend group subtree", "PROMPT": "Enter the Keystone LDAP group subtree.", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty, @@ -539,7 +468,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-filter", - "USAGE": "Keystone LDAP backend group query filter", "PROMPT": "Enter the Keystone LDAP group query filter.", "OPTION_LIST": [], "VALIDATORS": [], @@ -552,7 +480,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-objectclass", - "USAGE": "Keystone LDAP backend group objectclass", "PROMPT": "Enter the Keystone LDAP group objectclass.", "OPTION_LIST": [], "VALIDATORS": [], @@ -565,7 +492,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-id-attribute", - "USAGE": "Keystone LDAP backend group ID attribute", "PROMPT": "Enter the Keystone LDAP group ID attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -578,7 +504,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-name-attribute", - "USAGE": "Keystone LDAP backend group name attribute", "PROMPT": "Enter the Keystone LDAP group name attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -591,7 +516,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-member-attribute", - "USAGE": "Keystone LDAP backend group member attribute", "PROMPT": "Enter the Keystone LDAP group member attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -604,7 +528,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-desc-attribute", - "USAGE": "Keystone LDAP backend group description attribute", "PROMPT": "Enter the Keystone LDAP group description attribute.", "OPTION_LIST": [], "VALIDATORS": [], @@ -617,10 +540,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-attribute-ignore", - "USAGE": ( - "Comma separated list of attributes stripped from " - "group entry upon update" - ), "PROMPT": ( "Enter the comma separated Keystone LDAP group " "attributes to ignore." @@ -635,11 +554,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-allow-create", - "USAGE": ( - "Set to 'y' if you want to be able to create Keystone " - "groups through the Keystone interface. Set to 'n' if you " - "will create directly in the LDAP backend." - ), "PROMPT": ( "Do you want to allow group create through Keystone (n or y)." ), @@ -654,11 +568,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-allow-update", - "USAGE": ( - "Set to 'y' if you want to be able to update Keystone " - "groups through the Keystone interface. Set to 'n' if you " - "will update directly in the LDAP backend." - ), "PROMPT": ( "Do you want to allow group update through Keystone (n or y)." ), @@ -673,11 +582,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-allow-delete", - "USAGE": ( - "Set to 'y' if you want to be able to delete Keystone " - "groups through the Keystone interface. Set to 'n' if you " - "will delete directly in the LDAP backend." - ), "PROMPT": ( "Do you want to allow group delete through Keystone (n or y)." ), @@ -692,13 +596,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-group-additional-attribute-mapping", - "USAGE": ( - 'List of additional LDAP attributes used for mapping ' - 'additional attribute mappings for groups. Attribute ' - 'mapping format is :, where ' - 'ldap_attr is the attribute in the LDAP entry and ' - 'group_attr is the Identity API attribute.' - ), "PROMPT": ( "Enter the comma separated Keystone LDAP group additional " "attribute mappings in the form " @@ -715,7 +612,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-use-tls", - "USAGE": "Should Keystone LDAP use TLS", "PROMPT": ( "Enable TLS for Keystone communicating with " "LDAP servers (n or y)." @@ -731,7 +627,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-tls-cacertdir", - "USAGE": "Keystone LDAP CA certificate directory", "PROMPT": "CA Certificate directory for Keystone LDAP.", "OPTION_LIST": [], "DEFAULT_VALUE": "", @@ -743,7 +638,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-tls-cacertfile", - "USAGE": "Keystone LDAP CA certificate file", "PROMPT": "CA Certificate file for Keystone LDAP.", "OPTION_LIST": [], "DEFAULT_VALUE": "", @@ -755,10 +649,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "keystone-ldap-tls-req-cert", - "USAGE": ( - "Keystone LDAP certificate checking strictness " - "(never, allow, demand)" - ), "PROMPT": ( "Keystone LDAP certificate checking strictness " "(never, allow, demand)" @@ -774,7 +664,7 @@ def initConfig(controller): "CONDITION": False} ] } - + update_params_usage(basedefs.PACKSTACK_DOC, keystone_params) keystone_groups = [ {"GROUP_NAME": "KEYSTONE", "DESCRIPTION": "Keystone Config parameters", diff --git a/packstack/plugins/manila_255.py b/packstack/plugins/manila_255.py index 1a7a77c16..98b892790 100644 --- a/packstack/plugins/manila_255.py +++ b/packstack/plugins/manila_255.py @@ -15,10 +15,13 @@ """ Installs and configures Manila """ + +from packstack.installer import basedefs from packstack.installer import processors from packstack.installer import validators from packstack.installer import utils +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import getManifestTemplate from packstack.modules.ospluginutils import appendManifestFile @@ -34,7 +37,6 @@ def initConfig(controller): conf_params = { "MANILA": [ {"CMD_OPTION": "manila-db-passwd", - "USAGE": "The password to use for the Manila to access DB", "PROMPT": "Enter the password for the Manila DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -48,8 +50,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-ks-passwd", - "USAGE": ("The password to use for the Manila to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Manila Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -63,8 +63,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-backend", - "USAGE": ("The Manila backend to use, valid options are: " - "generic, netapp"), "PROMPT": "Enter the Manila backend to be configured", "OPTION_LIST": ["generic", "netapp"], "VALIDATORS": [validators.validate_options], @@ -79,10 +77,6 @@ def initConfig(controller): "MANILANETAPP": [ {"CMD_OPTION": "manila-netapp-nas-transport-type", - "USAGE": ("The transport protocol used when " - "communicating with ONTAPI on the storage system or " - "proxy server. Valid values are http or https. " - "Defaults to http"), "PROMPT": ("Enter a NetApp transport type"), "OPTION_LIST": ["http", "https"], "VALIDATORS": [validators.validate_options], @@ -95,8 +89,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-netapp-nas-login", - "USAGE": ("Administrative user account name used to " - "access the storage system or proxy server. "), "PROMPT": ("Enter a NetApp login"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -109,8 +101,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-netapp-nas-password", - "USAGE": ("Password for the administrative user " - "account specified in the netapp_nas_login parameter."), "PROMPT": ("Enter a NetApp password"), "OPTION_LIST": [""], "VALIDATORS": [validators.validate_not_empty], @@ -123,8 +113,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-netapp-nas-server-hostname", - "USAGE": ("The hostname (or IP address) for the " - "storage system or proxy server."), "PROMPT": ("Enter a NetApp hostname"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -138,8 +126,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-netapp-aggregate-name-search-pattern", - "USAGE": ("Pattern for searching available aggregates " - "for provisioning."), "PROMPT": ("Enter a NetApp aggregate name search pattern"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -152,8 +138,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-netapp-root-volume-aggregate", - "USAGE": ("Name of aggregate to create root volume " - "on. "), "PROMPT": ("Enter a NetApp root volume aggregate"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -166,7 +150,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-netapp-root-volume-name", - "USAGE": ("Root volume name. "), "PROMPT": ("Enter a NetApp root volume name"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -181,8 +164,6 @@ def initConfig(controller): "MANILAGENERIC": [ {"CMD_OPTION": "manila-generic-volume-name-template", - "USAGE": ("Volume name template. " - "Defaults to manila-share-%s"), "PROMPT": ("Enter a volume name template"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -195,8 +176,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-generic-share-mount-path", - "USAGE": ("Share mount path. " - "Defaults to /shares"), "PROMPT": ("Enter a share mount path"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -209,8 +188,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-service-image-location", - "USAGE": ("Location of disk image for service " - "instance."), "PROMPT": ("Enter a service image location"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -224,7 +201,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-service-instance-user", - "USAGE": ("User in service instance."), "PROMPT": ("Enter a service instance user"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -237,7 +213,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "manila-service-instance-password", - "USAGE": ("Password to service instance user."), "PROMPT": ("Enter a service instance password"), "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -250,7 +225,7 @@ def initConfig(controller): "CONDITION": False}, ] } - + update_params_usage(basedefs.PACKSTACK_DOC, conf_params) conf_groups = [ {"GROUP_NAME": "MANILA", "DESCRIPTION": "Manila Config parameters", diff --git a/packstack/plugins/mariadb_003.py b/packstack/plugins/mariadb_003.py index 2431bf1b8..4a7eb32e7 100644 --- a/packstack/plugins/mariadb_003.py +++ b/packstack/plugins/mariadb_003.py @@ -16,11 +16,13 @@ Installs and configures MariaDB """ +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import processors from packstack.installer import utils -from packstack.modules.common import filtered_hosts +from packstack.modules.common import filtered_hosts +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources from packstack.modules.ospluginutils import getManifestTemplate @@ -34,9 +36,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): params = [ {"CMD_OPTION": "mariadb-host", - "USAGE": ("The IP address of the server on which to install MariaDB " - "or IP address of DB server to use if MariaDB " - "installation was not selected"), "PROMPT": "Enter the IP address of the MariaDB server", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ssh], @@ -78,6 +77,7 @@ def initConfig(controller): "CONDITION": False, "DEPRECATES": ['CONFIG_MYSQL_PW']}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "MARIADB", "DESCRIPTION": "MariaDB Config parameters", "PRE_CONDITION": lambda x: 'yes', diff --git a/packstack/plugins/nagios_910.py b/packstack/plugins/nagios_910.py index 26f9acbf3..70e873165 100644 --- a/packstack/plugins/nagios_910.py +++ b/packstack/plugins/nagios_910.py @@ -16,10 +16,12 @@ Installs and configures Nagios """ +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import processors from packstack.installer import utils +from packstack.modules.documentation import update_params_usage from packstack.modules.common import filtered_hosts from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -34,7 +36,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): params = [ {"CMD_OPTION": "nagios-passwd", - "USAGE": "The password of the nagiosadmin user on the Nagios server", "PROMPT": "Enter the password for the nagiosadmin user", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -47,6 +48,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "NAGIOS", "DESCRIPTION": "Nagios Config parameters", "PRE_CONDITION": "CONFIG_NAGIOS_INSTALL", diff --git a/packstack/plugins/neutron_350.py b/packstack/plugins/neutron_350.py index d00aacdeb..8219645df 100644 --- a/packstack/plugins/neutron_350.py +++ b/packstack/plugins/neutron_350.py @@ -16,6 +16,7 @@ Installs and configures Neutron """ +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors @@ -23,6 +24,7 @@ from packstack.installer import output_messages from packstack.installer.utils import split_hosts from packstack.modules.common import filtered_hosts +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -38,8 +40,6 @@ def initConfig(controller): conf_params = { "NEUTRON": [ {"CMD_OPTION": "os-neutron-ks-password", - "USAGE": ("The password to use for Neutron to authenticate " - "with Keystone"), "PROMPT": "Enter the password for Neutron Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -53,7 +53,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-db-password", - "USAGE": "The password to use for Neutron to access DB", "PROMPT": "Enter the password for Neutron DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -67,9 +66,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-l3-ext-bridge", - "USAGE": ("The name of the ovs bridge (or empty for linuxbridge)" - " that the Neutron L3 agent will use for external " - " traffic, or 'provider' using provider networks. "), "PROMPT": ("Enter the ovs bridge the Neutron L3 agent will use " "for external traffic, or 'provider' if using " "provider networks."), @@ -84,7 +80,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-metadata-pw", - "USAGE": "Neutron metadata agent password", "PROMPT": "Enter Neutron metadata agent password", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -98,8 +93,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-lbaas-install", - "USAGE": ("Set to 'y' if you would like Packstack to install " - "Neutron LBaaS"), "PROMPT": "Should Packstack install Neutron LBaaS", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -112,8 +105,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-metering-agent-install", - "USAGE": ("Set to 'y' if you would like Packstack to install " - "Neutron L3 Metering agent"), "PROMPT": ("Should Packstack install Neutron L3 Metering agent"), "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -126,7 +117,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "neutron-fwaas", - "USAGE": ("Whether to configure neutron Firewall as a Service"), "PROMPT": "Would you like to configure neutron FWaaS?", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -141,9 +131,6 @@ def initConfig(controller): "NEUTRON_LB_AGENT": [ {"CMD_OPTION": "os-neutron-lb-interface-mappings", - "USAGE": ("A comma separated list of interface mappings for the " - "Neutron linuxbridge plugin (eg. physnet1:eth1," - "physnet2:eth2,physnet3:eth3)"), "PROMPT": ("Enter a comma separated list of interface mappings " "for the Neutron linuxbridge plugin"), "OPTION_LIST": [], @@ -159,9 +146,6 @@ def initConfig(controller): "NEUTRON_OVS_AGENT": [ {"CMD_OPTION": "os-neutron-ovs-bridge-mappings", - "USAGE": ("A comma separated list of bridge mappings for the " - "Neutron openvswitch plugin (eg. physnet1:br-eth1," - "physnet2:br-eth2,physnet3:br-eth3)"), "PROMPT": ("Enter a comma separated list of bridge mappings for " "the Neutron openvswitch plugin"), "OPTION_LIST": [], @@ -175,9 +159,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-ovs-bridge-interfaces", - "USAGE": ("A comma separated list of colon-separated OVS " - "bridge:interface pairs. The interface will be added " - "to the associated bridge."), "PROMPT": ("Enter a comma separated list of OVS bridge:interface " "pairs for the Neutron openvswitch plugin"), "OPTION_LIST": [], @@ -193,10 +174,6 @@ def initConfig(controller): "NEUTRON_OVS_AGENT_TUNNEL": [ {"CMD_OPTION": "os-neutron-ovs-tunnel-if", - "USAGE": ("The interface for the OVS tunnel. Packstack will " - "override the IP address used for tunnels on this " - "hypervisor to the IP found on the specified interface." - " (eg. eth1)"), "PROMPT": ("Enter interface with IP to override the default " "tunnel local_ip"), "OPTION_LIST": [], @@ -213,7 +190,6 @@ def initConfig(controller): "NEUTRON_OVS_AGENT_VXLAN": [ {"CMD_OPTION": "os-neutron-ovs-vxlan-udp-port", "CONF_NAME": "CONFIG_NEUTRON_OVS_VXLAN_UDP_PORT", - "USAGE": "VXLAN UDP port", "PROMPT": "Enter VXLAN UDP port number", "OPTION_LIST": [], "VALIDATORS": [validators.validate_port], @@ -228,9 +204,6 @@ def initConfig(controller): "NEUTRON_ML2_PLUGIN": [ {"CMD_OPTION": "os-neutron-ml2-type-drivers", "CONF_NAME": "CONFIG_NEUTRON_ML2_TYPE_DRIVERS", - "USAGE": ("A comma separated list of network type driver " - "entrypoints to be loaded from the " - "neutron.ml2.type_drivers namespace."), "PROMPT": ("Enter a comma separated list of network type driver " "entrypoints"), "OPTION_LIST": ["local", "flat", "vlan", "gre", "vxlan"], @@ -244,10 +217,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-tenant-network-types", "CONF_NAME": "CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES", - "USAGE": ("A comma separated ordered list of network_types to " - "allocate as tenant networks. The value 'local' is " - "only useful for single-box testing but provides no " - "connectivity between hosts."), "PROMPT": ("Enter a comma separated ordered list of " "network_types to allocate as tenant networks"), "OPTION_LIST": ["local", "vlan", "gre", "vxlan"], @@ -261,9 +230,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-mechanism-drivers", "CONF_NAME": "CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS", - "USAGE": ("A comma separated ordered list of networking " - "mechanism driver entrypoints to be loaded from the " - "neutron.ml2.mechanism_drivers namespace."), "PROMPT": ("Enter a comma separated ordered list of networking " "mechanism driver entrypoints"), "OPTION_LIST": ["logger", "test", "linuxbridge", "openvswitch", @@ -279,10 +245,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-flat-networks", "CONF_NAME": "CONFIG_NEUTRON_ML2_FLAT_NETWORKS", - "USAGE": ("A comma separated list of physical_network names " - "with which flat networks can be created. Use * to " - "allow flat networks with arbitrary physical_network " - "names."), "PROMPT": ("Enter a comma separated list of physical_network " "names with which flat networks can be created"), "OPTION_LIST": [], @@ -296,12 +258,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-vlan-ranges", "CONF_NAME": "CONFIG_NEUTRON_ML2_VLAN_RANGES", - "USAGE": ("A comma separated list of :" - ": or " - "specifying physical_network names usable for VLAN " - "provider and tenant networks, as well as ranges of " - "VLAN tags on each available for allocation to tenant " - "networks."), "PROMPT": ("Enter a comma separated list of physical_network " "names usable for VLAN"), "OPTION_LIST": [], @@ -315,10 +271,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-tunnel-id-ranges", "CONF_NAME": "CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES", - "USAGE": ("A comma separated list of : tuples " - "enumerating ranges of GRE tunnel IDs that are " - "available for tenant network allocation. Should be " - "an array with tun_max +1 - tun_min > 1000000"), "PROMPT": ("Enter a comma separated list of : " "tuples enumerating ranges of GRE tunnel IDs that " "are available for tenant network allocation"), @@ -333,11 +285,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-vxlan-group", "CONF_NAME": "CONFIG_NEUTRON_ML2_VXLAN_GROUP", - "USAGE": ("Multicast group for VXLAN. If unset, disables VXLAN " - "enable sending allocate broadcast traffic to this " - "multicast group. When left unconfigured, will disable " - "multicast VXLAN mode. Should be an Multicast IP " - "(v4 or v6) address."), "PROMPT": "Enter a multicast group for VXLAN", "OPTION_LIST": [], "VALIDATORS": [], @@ -350,10 +297,6 @@ def initConfig(controller): {"CMD_OPTION": "os-neutron-ml2-vni-ranges", "CONF_NAME": "CONFIG_NEUTRON_ML2_VNI_RANGES", - "USAGE": ("A comma separated list of : tuples " - "enumerating ranges of VXLAN VNI IDs that are " - "available for tenant network allocation. Min value " - "is 0 and Max value is 16777215."), "PROMPT": ("Enter a comma separated list of : " "tuples enumerating ranges of VXLAN VNI IDs that are " "available for tenant network allocation"), @@ -368,7 +311,6 @@ def initConfig(controller): # We need to ask for this only in case of ML2 plugins {"CMD_OPTION": "os-neutron-l2-agent", - "USAGE": "The name of the L2 agent to be used with Neutron", "PROMPT": ("Enter the name of the L2 agent to be used " "with Neutron"), "OPTION_LIST": ["linuxbridge", "openvswitch"], @@ -382,7 +324,7 @@ def initConfig(controller): "CONDITION": False}, ], } - + update_params_usage(basedefs.PACKSTACK_DOC, conf_params) conf_groups = [ {"GROUP_NAME": "NEUTRON", "DESCRIPTION": "Neutron config", diff --git a/packstack/plugins/nova_300.py b/packstack/plugins/nova_300.py index 1c13cf129..1682852d8 100644 --- a/packstack/plugins/nova_300.py +++ b/packstack/plugins/nova_300.py @@ -26,6 +26,7 @@ from packstack.installer import utils from packstack.installer import validators from packstack.installer.exceptions import ScriptRuntimeError +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -50,7 +51,6 @@ def initConfig(controller): nova_params = { "NOVA": [ {"CMD_OPTION": "nova-db-passwd", - "USAGE": "The password to use for the Nova to access DB", "PROMPT": "Enter the password for the Nova DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -64,8 +64,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "nova-ks-passwd", - "USAGE": ("The password to use for the Nova to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Nova Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -79,8 +77,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novasched-cpu-allocation-ratio", - "USAGE": ("The overcommitment ratio for virtual to physical CPUs." - " Set to 1.0 to disable CPU overcommitment"), "PROMPT": "Enter the CPU overcommitment ratio. Set to 1.0 to " "disable CPU overcommitment", "OPTION_LIST": [], @@ -94,8 +90,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novasched-ram-allocation-ratio", - "USAGE": ("The overcommitment ratio for virtual to physical RAM. " - "Set to 1.0 to disable RAM overcommitment"), "PROMPT": ("Enter the RAM overcommitment ratio. Set to 1.0 to " "disable RAM overcommitment"), "OPTION_LIST": [], @@ -109,11 +103,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novacompute-migrate-protocol", - "USAGE": ("Protocol used for instance migration. Allowed values " - "are tcp and ssh. Note that by defaul nova user is " - "created with /sbin/nologin shell so that ssh protocol " - "won't be working. To make ssh protocol work you have " - "to fix nova user on compute hosts manually."), "PROMPT": ("Enter protocol which will be used for instance " "migration"), "OPTION_LIST": ['tcp', 'ssh'], @@ -127,7 +116,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "nova-compute-manager", - "USAGE": ("The manager that will run nova compute."), "PROMPT": ("Enter the compute manager for nova " "migration"), "OPTION_LIST": [], @@ -144,8 +132,6 @@ def initConfig(controller): "NOVA_NETWORK": [ {"CMD_OPTION": "novacompute-privif", - "USAGE": ("Private interface for Flat DHCP on the Nova compute " - "servers"), "PROMPT": ("Enter the Private interface for Flat DHCP on the Nova" " compute servers"), "OPTION_LIST": [], @@ -159,7 +145,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-manager", - "USAGE": "Nova network manager", "PROMPT": "Enter the Nova network manager", "OPTION_LIST": [r'^nova\.network\.manager\.\w+Manager$'], "VALIDATORS": [validators.validate_regexp], @@ -172,7 +157,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-pubif", - "USAGE": "Public interface on the Nova network server", "PROMPT": "Enter the Public interface on the Nova network server", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -185,8 +169,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-privif", - "USAGE": ("Private interface for network manager on the Nova " - "network server"), "PROMPT": ("Enter the Private interface for network manager on " "the Nova network server"), "OPTION_LIST": [], @@ -200,7 +182,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-fixed-range", - "USAGE": "IP Range for network manager", "PROMPT": "Enter the IP Range for network manager", "OPTION_LIST": ["^[\:\.\da-fA-f]+(\/\d+){0,1}$"], "PROCESSORS": [processors.process_cidr], @@ -214,7 +195,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-floating-range", - "USAGE": "IP Range for Floating IP's", "PROMPT": "Enter the IP Range for Floating IP's", "OPTION_LIST": ["^[\:\.\da-fA-f]+(\/\d+){0,1}$"], "PROCESSORS": [processors.process_cidr], @@ -228,7 +208,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-auto-assign-floating-ip", - "USAGE": "Automatically assign a floating IP to new instances", "PROMPT": ("Should new instances automatically have a floating " "IP assigned?"), "OPTION_LIST": ["y", "n"], @@ -244,7 +223,6 @@ def initConfig(controller): "NOVA_NETWORK_VLAN": [ {"CMD_OPTION": "novanetwork-vlan-start", - "USAGE": "First VLAN for private networks", "PROMPT": "Enter first VLAN for private networks", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -257,7 +235,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-num-networks", - "USAGE": "Number of networks to support", "PROMPT": "How many networks should be supported", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -270,7 +247,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "novanetwork-network-size", - "USAGE": "Number of addresses in each private subnet", "PROMPT": "How many addresses should be in each private subnet", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -283,6 +259,7 @@ def initConfig(controller): "CONDITION": False}, ], } + update_params_usage(basedefs.PACKSTACK_DOC, nova_params) def use_nova_network(config): return (config['CONFIG_NOVA_INSTALL'] == 'y' and diff --git a/packstack/plugins/prescript_000.py b/packstack/plugins/prescript_000.py index ff86fae19..7f602d368 100644 --- a/packstack/plugins/prescript_000.py +++ b/packstack/plugins/prescript_000.py @@ -29,6 +29,7 @@ from packstack.installer import validators from packstack.modules.common import filtered_hosts from packstack.modules.common import is_all_in_one +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import getManifestTemplate @@ -44,12 +45,6 @@ def initConfig(controller): params = { "GLOBAL": [ {"CMD_OPTION": "ssh-public-key", - "USAGE": ( - "Path to a Public key to install on servers. If a usable " - "key has not been installed on the remote servers the user " - "will be prompted for a password and this key will be " - "installed so the password will not be required again" - ), "PROMPT": ( "Enter the path to your ssh Public key to install on servers" ), @@ -68,11 +63,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "default-password", - "USAGE": ( - "Set a default password everywhere. The default password " - "will be overriden by whatever password is set for each " - "individual service or user." - ), "PROMPT": ( "Enter a default password to be used. Leave blank for a " "randomly generated one." @@ -87,9 +77,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "mariadb-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install MariaDB" - ), "PROMPT": "Should Packstack install MariaDB", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -103,10 +90,6 @@ def initConfig(controller): "DEPRECATES": ['CONFIG_MYSQL_INSTALL']}, {"CMD_OPTION": "os-glance-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Image Service (Glance)" - ), "PROMPT": ( "Should Packstack install OpenStack Image Service (Glance)" ), @@ -121,10 +104,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-cinder-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Block Storage (Cinder)" - ), "PROMPT": ( "Should Packstack install OpenStack Block Storage " "(Cinder) service" @@ -140,10 +119,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-manila-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Shared File System (Manila)" - ), "PROMPT": ( "Should Packstack install OpenStack Shared File System " "(Manila) service" @@ -159,10 +134,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-nova-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Compute (Nova)" - ), "PROMPT": ( "Should Packstack install OpenStack Compute (Nova) service" ), @@ -177,11 +148,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-neutron-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Networking (Neutron). Otherwise Nova Network " - "will be used." - ), "PROMPT": ( "Should Packstack install OpenStack Networking (Neutron) " "service" @@ -197,10 +163,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-horizon-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Dashboard (Horizon)" - ), "PROMPT": ( "Should Packstack install OpenStack Dashboard (Horizon)" ), @@ -215,10 +177,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-swift-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Object Storage (Swift)" - ), "PROMPT": ( "Should Packstack install OpenStack Object Storage (Swift)" ), @@ -233,10 +191,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-ceilometer-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Metering (Ceilometer)" - ), "PROMPT": ( "Should Packstack install OpenStack Metering (Ceilometer)" ), @@ -251,10 +205,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-heat-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Orchestration (Heat)" - ), "PROMPT": ( "Should Packstack install OpenStack Orchestration (Heat)" ), @@ -269,10 +219,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-sahara-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Clustering (Sahara)" - ), "PROMPT": ( "Should Packstack install OpenStack Clustering (Sahara)" ), @@ -287,10 +233,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-trove-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Database (Trove)" - ), "PROMPT": ( "Should Packstack install OpenStack Database (Trove)" ), @@ -305,10 +247,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-ironic-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "OpenStack Bare Metal (Ironic)" - ), "PROMPT": ( "Should Packstack install OpenStack Bare Metal (Ironic)" ), @@ -323,11 +261,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-client-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install " - "the OpenStack Client packages. An admin \"rc\" file will " - "also be installed" - ), "PROMPT": "Should Packstack install OpenStack client tools", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -340,8 +273,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "ntp-servers", - "USAGE": ("Comma separated list of NTP servers. Leave plain if " - "Packstack should not install ntpd on instances."), "PROMPT": ("Enter a comma separated list of NTP server(s). Leave " "plain if Packstack should not install ntpd " "on instances."), @@ -355,10 +286,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "nagios-install", - "USAGE": ( - "Set to 'y' if you would like Packstack to install Nagios " - "to monitor OpenStack hosts" - ), "PROMPT": ( "Should Packstack install Nagios to monitor OpenStack " "hosts" @@ -374,13 +301,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "exclude-servers", - "USAGE": ( - "Comma separated list of servers to be excluded from " - "installation in case you are running Packstack the second " - "time with the same answer file and don't want Packstack " - "to touch these servers. Leave plain if you don't need to " - "exclude any server." - ), "PROMPT": ( "Enter a comma separated list of server(s) to be excluded." " Leave plain if you don't need to exclude any server." @@ -395,10 +315,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-debug-mode", - "USAGE": ( - "Set to 'y' if you want to run OpenStack services in debug " - "mode. Otherwise set to 'n'." - ), "PROMPT": "Do you want to run OpenStack services in debug mode", "OPTION_LIST": ["y", "n"], "DEFAULT_VALUE": "n", @@ -412,11 +328,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_CONTROLLER_HOST", "CMD_OPTION": "os-controller-host", - "USAGE": ( - "The IP address of the server on which to install OpenStack" - " services specific to controller role such as API servers," - " Horizon, etc." - ), "PROMPT": "Enter the IP address of the controller host", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ip, @@ -446,10 +357,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_COMPUTE_HOSTS", "CMD_OPTION": "os-compute-hosts", - "USAGE": ( - "The list of IP addresses of the server on which to install" - " the Nova compute service" - ), "PROMPT": ( "Enter list of IP addresses on which to install compute " "service" @@ -467,9 +374,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_NETWORK_HOSTS", "CMD_OPTION": "os-network-hosts", - "USAGE": ("The list of IP addresses of the server on which " - "to install the network service such as Nova " - "network or Neutron"), "PROMPT": ("Enter list of IP addresses on which to install " "network service"), "OPTION_LIST": [], @@ -487,10 +391,6 @@ def initConfig(controller): 'CONFIG_NOVA_NETWORK_HOSTS']}, {"CMD_OPTION": "os-vmware", - "USAGE": ( - "Set to 'y' if you want to use VMware vCenter as hypervisor" - " and storage. Otherwise set to 'n'." - ), "PROMPT": ( "Do you want to use VMware vCenter as hypervisor and " "datastore" @@ -506,10 +406,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-vmware", - "USAGE": ( - "Set to 'y' if you want to use VMware vCenter as hypervisor" - " and storage. Otherwise set to 'n'." - ), "PROMPT": ( "Do you want to use VMware vCenter as hypervisor and " "datastore" @@ -525,12 +421,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "unsupported", - "USAGE": ( - "Set to 'y' if you want to use unsupported parameters. " - "This should be used only if you know what you are doing." - "Issues caused by using unsupported options won't be fixed " - "before next major release." - ), "PROMPT": ( "Enable this on your own risk. Do you want to use " "insupported parameters" @@ -548,7 +438,6 @@ def initConfig(controller): "VMWARE": [ {"CMD_OPTION": "vcenter-host", - "USAGE": "The IP address of the VMware vCenter server", "PROMPT": ( "Enter the IP address of the VMware vCenter server to use " "with Nova" @@ -564,7 +453,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "vcenter-username", - "USAGE": "The username to authenticate to VMware vCenter server", "PROMPT": ("Enter the username to authenticate on VMware " "vCenter server"), "DEFAULT_VALUE": "", @@ -576,7 +464,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "vcenter-password", - "USAGE": "The password to authenticate to VMware vCenter server", "PROMPT": ("Enter the password to authenticate on VMware " "vCenter server"), "DEFAULT_VALUE": "", @@ -588,7 +475,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "vcenter-cluster", - "USAGE": "The name of the vCenter cluster", "PROMPT": "Enter the name of the vCenter datastore", "DEFAULT_VALUE": "", "MASK_INPUT": False, @@ -602,11 +488,6 @@ def initConfig(controller): "UNSUPPORTED": [ {"CONF_NAME": "CONFIG_STORAGE_HOST", "CMD_OPTION": "os-storage-host", - "USAGE": ( - "(Unsupported!) The IP address of the server on which " - "to install OpenStack services specific to storage servers " - "such as Glance and Cinder." - ), "PROMPT": "Enter the IP address of the storage host", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ip, @@ -620,10 +501,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_SAHARA_HOST", "CMD_OPTION": "os-sahara-host", - "USAGE": ( - "(Unsupported!) The IP address of the server on which " - "to install OpenStack services specific to Sahara" - ), "PROMPT": "Enter the IP address of the Sahara host", "OPTION_LIST": [], "VALIDATORS": [validators.validate_ip, @@ -636,6 +513,7 @@ def initConfig(controller): "CONDITION": False}, ] } + update_params_usage(basedefs.PACKSTACK_DOC, params) def use_vcenter(config): return (config['CONFIG_NOVA_INSTALL'] == 'y' and diff --git a/packstack/plugins/provision_700.py b/packstack/plugins/provision_700.py index 774f60dae..69ba27cd1 100644 --- a/packstack/plugins/provision_700.py +++ b/packstack/plugins/provision_700.py @@ -16,11 +16,13 @@ Installs and configures Provisioning for demo usage and testing """ +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors from packstack.modules.common import is_all_in_one +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import getManifestTemplate @@ -45,9 +47,6 @@ def initConfig(controller): conf_params = { "PROVISION_INIT": [ {"CMD_OPTION": "provision-demo", - "USAGE": ("Whether to provision for demo usage and testing. Note " - "that provisioning is only supported for all-in-one " - "installations."), "PROMPT": ("Would you like to provision for demo usage " "and testing"), "OPTION_LIST": ["y", "n"], @@ -61,7 +60,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-tempest", - "USAGE": "Whether to configure tempest for testing", "PROMPT": ("Would you like to configure Tempest (OpenStack test " "suite). Note that provisioning is only supported for " "all-in-one installations."), @@ -78,7 +76,6 @@ def initConfig(controller): "PROVISION_DEMO": [ {"CMD_OPTION": "provision-demo-floatrange", - "USAGE": "The CIDR network address for the floating IP subnet", "PROMPT": "Enter the network address for the floating IP subnet", "OPTION_LIST": False, "VALIDATORS": False, @@ -91,7 +88,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-image-name", - "USAGE": "A named to be used for the demo image in Glance", "PROMPT": "Enter the name to be assigned to the demo image", "OPTION_LIST": False, "VALIDATORS": [validators.validate_not_empty], @@ -104,8 +100,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-image-url", - "USAGE": ("A URL or local file location for an image " - "to be loaded into Glance"), "PROMPT": ("Enter the location of an image to be loaded " "into Glance"), "OPTION_LIST": False, @@ -119,7 +113,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-image-format", - "USAGE": ("Disk format (qcow2, raw, etc) of demo image"), "PROMPT": ("Enter the format of the demo image"), "OPTION_LIST": False, "VALIDATORS": [validators.validate_not_empty], @@ -132,8 +125,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-image-ssh-user", - "USAGE": ("Name of a user to use when connecting via ssh to " - "instances booted from the demo image"), "PROMPT": ("Enter the name of a user to use when connecting " "to the demo image via ssh"), "OPTION_LIST": False, @@ -149,9 +140,6 @@ def initConfig(controller): "PROVISION_TEMPEST": [ {"CMD_OPTION": "provision-tempest-user", - "USAGE": "The name of the Tempest Provisioning user. If you " - "don't provide a user name, Tempest will be configured " - "in a standalone mode", "PROMPT": ("Enter the name of the Tempest Provisioning user " "(if blank, Tempest will be configured in a " "standalone mode) "), @@ -166,7 +154,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-tempest-user-passwd", - "USAGE": "The password to use for the Tempest Provisioning user", "PROMPT": "Enter the password for the Tempest Provisioning user", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -180,7 +167,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-tempest-floatrange", - "USAGE": "The CIDR network address for the floating IP subnet", "PROMPT": "Enter the network address for the floating IP subnet", "OPTION_LIST": False, "VALIDATORS": False, @@ -193,7 +179,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-tempest-repo-uri", - "USAGE": "The uri of the tempest git repository to use", "PROMPT": "What is the uri of the Tempest git repository?", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -206,7 +191,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "provision-tempest-repo-revision", - "USAGE": "The revision of the tempest git repository to use", "PROMPT": ("What revision, branch, or tag of the Tempest git " "repository should be used"), "OPTION_LIST": [], @@ -222,8 +206,6 @@ def initConfig(controller): "PROVISION_ALL_IN_ONE_OVS_BRIDGE": [ {"CMD_OPTION": "provision-all-in-one-ovs-bridge", - "USAGE": ("Whether to configure the ovs external bridge in an " - "all-in-one deployment"), "PROMPT": "Would you like to configure the external ovs bridge", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -236,6 +218,7 @@ def initConfig(controller): "CONDITION": False}, ], } + update_params_usage(basedefs.PACKSTACK_DOC, conf_params) def check_provisioning_demo(config): return (config.get('CONFIG_PROVISION_DEMO', 'n') == 'y') diff --git a/packstack/plugins/sahara_800.py b/packstack/plugins/sahara_800.py index 8824b6011..41b463fdd 100644 --- a/packstack/plugins/sahara_800.py +++ b/packstack/plugins/sahara_800.py @@ -16,9 +16,12 @@ Installs and configures Sahara """ +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors + +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -35,7 +38,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_SAHARA_DB_PW", "CMD_OPTION": "sahara-db-passwd", "PROMPT": "Enter the password to use for Sahara to access the DB", - "USAGE": "The password to use for the Sahara DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], "DEFAULT_VALUE": "PW_PLACEHOLDER", @@ -48,8 +50,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_SAHARA_KS_PW", "CMD_OPTION": "sahara-ks-passwd", - "USAGE": ("The password to use for Sahara to authenticate " - "with Keystone"), "PROMPT": "Enter the password for Sahara Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -61,6 +61,7 @@ def initConfig(controller): "NEED_CONFIRM": True, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "SAHARA", "DESCRIPTION": "Sahara Config parameters", "PRE_CONDITION": "CONFIG_SAHARA_INSTALL", diff --git a/packstack/plugins/serverprep_001.py b/packstack/plugins/serverprep_001.py index 8938be5f6..abb3db1d1 100644 --- a/packstack/plugins/serverprep_001.py +++ b/packstack/plugins/serverprep_001.py @@ -21,12 +21,14 @@ import re import logging import platform +from packstack.installer import basedefs from packstack.installer import exceptions from packstack.installer import utils from packstack.installer import validators from packstack.modules.common import filtered_hosts from packstack.modules.common import is_all_in_one +from packstack.modules.documentation import update_params_usage # ------------ Server Preparation Packstack Plugin Initialization ------------- @@ -38,7 +40,6 @@ def initConfig(controller): conf_params = { "SERVERPREPARE": [ {"CMD_OPTION": "use-epel", - "USAGE": "To subscribe each server to EPEL enter \"y\"", "PROMPT": "To subscribe each server to EPEL enter \"y\"", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -51,8 +52,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "additional-repo", - "USAGE": ("A comma separated list of URLs to any additional yum " - "repositories to install"), "PROMPT": ("Enter a comma separated list of URLs to any " "additional yum repositories to install"), "OPTION_LIST": [], @@ -67,8 +66,6 @@ def initConfig(controller): "RHEL": [ {"CMD_OPTION": "rh-username", - "USAGE": ("To subscribe each server with Red Hat subscription " - "manager, include this with CONFIG_RH_PW"), "PROMPT": "To subscribe each server to Red Hat enter a username ", "OPTION_LIST": [], "DEFAULT_VALUE": "", @@ -80,10 +77,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-server", - "USAGE": ("To subscribe each server with RHN Satellite,fill " - "Satellite's URL here. Note that either satellite's " - "username/password or activation key has " - "to be provided"), "PROMPT": ("To subscribe each server with RHN Satellite enter " "RHN Satellite server URL"), "OPTION_LIST": [], @@ -98,8 +91,6 @@ def initConfig(controller): "RHSM": [ {"CMD_OPTION": "rh-password", - "USAGE": ("To subscribe each server with Red Hat subscription " - "manager, include this with CONFIG_RH_USER"), "PROMPT": ("To subscribe each server to Red Hat enter your " "password"), "OPTION_LIST": [], @@ -112,7 +103,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rh-enable-optional", - "USAGE": "To enable RHEL optional repos use value \"y\"", "PROMPT": "To enable RHEL optional repos use value \"y\"", "OPTION_LIST": ["y", "n"], "VALIDATORS": [validators.validate_options], @@ -125,8 +115,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rh-proxy-host", - "USAGE": ("Specify a HTTP proxy to use with Red Hat subscription " - "manager"), "PROMPT": ("Specify a HTTP proxy to use with Red Hat subscription" " manager"), "OPTION_LIST": [], @@ -141,8 +129,6 @@ def initConfig(controller): "RHSM_PROXY": [ {"CMD_OPTION": "rh-proxy-port", - "USAGE": ("Specify port of Red Hat subscription manager HTTP " - "proxy"), "PROMPT": ("Specify port of Red Hat subscription manager HTTP " "proxy"), "OPTION_LIST": [], @@ -155,8 +141,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rh-proxy-user", - "USAGE": ("Specify a username to use with Red Hat subscription " - "manager HTTP proxy"), "PROMPT": ("Specify a username to use with Red Hat subscription " "manager HTTP proxy"), "OPTION_LIST": [], @@ -169,8 +153,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rh-proxy-password", - "USAGE": ("Specify a password to use with Red Hat subscription " - "manager HTTP proxy"), "PROMPT": ("Specify a password to use with Red Hat subscription " "manager HTTP proxy"), "OPTION_LIST": [], @@ -185,7 +167,6 @@ def initConfig(controller): "SATELLITE": [ {"CMD_OPTION": "rhn-satellite-username", - "USAGE": "Username to access RHN Satellite", "PROMPT": ("Enter RHN Satellite username or leave plain if you " "will use activation key instead"), "OPTION_LIST": [], @@ -198,7 +179,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-password", - "USAGE": "Password to access RHN Satellite", "PROMPT": ("Enter RHN Satellite password or leave plain if you " "will use activation key instead"), "OPTION_LIST": [], @@ -211,7 +191,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-activation-key", - "USAGE": "Activation key for subscription to RHN Satellite", "PROMPT": ("Enter RHN Satellite activation key or leave plain if " "you used username/password instead"), "OPTION_LIST": [], @@ -224,7 +203,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-cacert", - "USAGE": "Specify a path or URL to a SSL CA certificate to use", "PROMPT": "Specify a path or URL to a SSL CA certificate to use", "OPTION_LIST": [], "DEFAULT_VALUE": "", @@ -236,9 +214,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-profile", - "USAGE": ("If required specify the profile name that should be " - "used as an identifier for the system " - "in RHN Satellite"), "PROMPT": ("If required specify the profile name that should be " "used as an identifier for the system " "in RHN Satellite"), @@ -252,8 +227,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-flags", - "USAGE": ("Comma separated list of flags passed to rhnreg_ks. " - "Valid flags are: novirtinfo, norhnsd, nopackages"), "PROMPT": ("Enter comma separated list of flags passed " "to rhnreg_ks"), "OPTION_LIST": ['novirtinfo', 'norhnsd', 'nopackages'], @@ -267,7 +240,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-proxy-host", - "USAGE": "Specify a HTTP proxy to use with RHN Satellite", "PROMPT": "Specify a HTTP proxy to use with RHN Satellite", "OPTION_LIST": [], "DEFAULT_VALUE": "", @@ -281,8 +253,6 @@ def initConfig(controller): "SATELLITE_PROXY": [ {"CMD_OPTION": "rhn-satellite-proxy-username", - "USAGE": ("Specify a username to use with an authenticated " - "HTTP proxy"), "PROMPT": ("Specify a username to use with an authenticated " "HTTP proxy"), "OPTION_LIST": [], @@ -295,8 +265,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "rhn-satellite-proxy-password", - "USAGE": ("Specify a password to use with an authenticated " - "HTTP proxy."), "PROMPT": ("Specify a password to use with an authenticated " "HTTP proxy."), "OPTION_LIST": [], @@ -309,6 +277,7 @@ def initConfig(controller): "CONDITION": False} ] } + update_params_usage(basedefs.PACKSTACK_DOC, conf_params) def filled_rhsm(config): return bool(config.get('CONFIG_RH_USER')) diff --git a/packstack/plugins/swift_600.py b/packstack/plugins/swift_600.py index 160e2a479..c869c8077 100644 --- a/packstack/plugins/swift_600.py +++ b/packstack/plugins/swift_600.py @@ -21,12 +21,14 @@ import re import uuid import netaddr +from packstack.installer import basedefs from packstack.installer import validators from packstack.installer import processors from packstack.installer.exceptions import ParamValidationError from packstack.installer import utils from packstack.installer.utils import split_hosts +from packstack.modules.documentation import update_params_usage from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources from packstack.modules.ospluginutils import getManifestTemplate @@ -41,8 +43,6 @@ PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue') def initConfig(controller): params = [ {"CMD_OPTION": "os-swift-ks-passwd", - "USAGE": ("The password to use for the Swift to authenticate " - "with Keystone"), "PROMPT": "Enter the password for the Swift Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -56,13 +56,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-swift-storages", - "USAGE": ("A comma separated list of devices which to use as Swift " - "Storage device. Each entry should take the format " - "/path/to/dev, for example /dev/vdb will install /dev/vdb " - "as Swift storage device (packstack does not create " - "the filesystem, you must do this first). If value is " - "omitted Packstack will create a loopback device for test " - "setup"), "PROMPT": "Enter the Swift Storage devices e.g. /path/to/dev", "OPTION_LIST": [], "VALIDATORS": [validate_storage], @@ -76,8 +69,6 @@ def initConfig(controller): "DEPRECATES": ['CONFIG_SWIFT_STORAGE_HOSTS']}, {"CMD_OPTION": "os-swift-storage-zones", - "USAGE": ("Number of swift storage zones, this number MUST be " - "no bigger than the number of storage devices configured"), "PROMPT": ("Enter the number of swift storage zones, MUST be no " "bigger than the number of storage devices configured"), "OPTION_LIST": [], @@ -91,8 +82,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-swift-storage-replicas", - "USAGE": ("Number of swift storage replicas, this number MUST be " - "no bigger than the number of storage zones configured"), "PROMPT": ("Enter the number of swift storage replicas, MUST be no " "bigger than the number of storage zones configured"), "OPTION_LIST": [], @@ -106,7 +95,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-swift-storage-fstype", - "USAGE": "FileSystem type for storage nodes", "PROMPT": "Enter FileSystem type for storage nodes", "OPTION_LIST": ['xfs', 'ext4'], "VALIDATORS": [validators.validate_options], @@ -119,7 +107,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-swift-hash", - "USAGE": "Shared secret for Swift", "PROMPT": "Enter hash for Swift shared secret", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -132,7 +119,6 @@ def initConfig(controller): "CONDITION": False}, {"CMD_OPTION": "os-swift-storage-size", - "USAGE": "Size of the swift loopback file storage device", "PROMPT": ("Enter the size of the storage device (eg. 2G, 2000M, " "2000000K)"), "OPTION_LIST": [], @@ -145,6 +131,7 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ] + update_params_usage(basedefs.PACKSTACK_DOC, params, sectioned=False) group = {"GROUP_NAME": "OSSWIFT", "DESCRIPTION": "OpenStack Swift Config parameters", "PRE_CONDITION": "CONFIG_SWIFT_INSTALL", diff --git a/packstack/plugins/trove_850.py b/packstack/plugins/trove_850.py index 7ff3ca41e..17380ad43 100644 --- a/packstack/plugins/trove_850.py +++ b/packstack/plugins/trove_850.py @@ -16,9 +16,12 @@ Installs and configures Trove """ +from packstack.installer import basedefs from packstack.installer import utils from packstack.installer import validators from packstack.installer import processors + +from packstack.modules.documentation import update_params_usage from packstack.modules.shortcuts import get_mq from packstack.modules.ospluginutils import appendManifestFile from packstack.modules.ospluginutils import createFirewallResources @@ -45,7 +48,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_TROVE_DB_PW", "CMD_OPTION": "trove-db-passwd", "PROMPT": "Enter the password to use for Trove to access the DB", - "USAGE": "The password to use for the Trove DB access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], "DEFAULT_VALUE": "PW_PLACEHOLDER", @@ -58,8 +60,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_TROVE_KS_PW", "CMD_OPTION": "trove-ks-passwd", - "USAGE": ("The password to use for Trove to authenticate " - "with Keystone"), "PROMPT": "Enter the password for Trove Keystone access", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -73,7 +73,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_TROVE_NOVA_USER", "CMD_OPTION": "trove-nova-user", - "USAGE": "The user to use when Trove connects to Nova", "PROMPT": "Enter the user for Trove to use to connect to Nova", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -86,7 +85,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_TROVE_NOVA_TENANT", "CMD_OPTION": "trove-nova-tenant", - "USAGE": "The tenant to use when Trove connects to Nova", "PROMPT": "Enter the tenant for Trove to use to connect to Nova", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -99,7 +97,6 @@ def initConfig(controller): {"CONF_NAME": "CONFIG_TROVE_NOVA_PW", "CMD_OPTION": "trove-nova-passwd", - "USAGE": "The password to use when Trove connects to Nova", "PROMPT": "Enter the password for Trove to use to connect to Nova", "OPTION_LIST": [], "VALIDATORS": [validators.validate_not_empty], @@ -111,7 +108,7 @@ def initConfig(controller): "NEED_CONFIRM": True, "CONDITION": False}, ] - + update_params_usage(basedefs.PACKSTACK_DOC, parameters, sectioned=False) group = {"GROUP_NAME": "Trove", "DESCRIPTION": "Trove config parameters", "PRE_CONDITION": "CONFIG_TROVE_INSTALL", diff --git a/requirements.txt b/requirements.txt index a4f778dfa..23f2069b7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ netaddr>=0.7.6 PyYAML>=3.10 +docutils>=0.11 diff --git a/setup.py b/setup.py index 2510942fc..b00b36036 100644 --- a/setup.py +++ b/setup.py @@ -99,11 +99,12 @@ setup( license="ASL 2.0", keywords="openstack", url="https://github.com/stackforge/packstack", - packages=find_packages('.'), + packages=find_packages('.') + ['docs'], + package_data={'docs': ['docs/packstack.rst']}, include_package_data=True, long_description=read('README.md'), zip_safe=False, - install_requires=['netaddr', 'PyYAML'], + install_requires=['netaddr', 'PyYAML', 'docutils'], classifiers=[ "Development Status :: 3 - Alpha", "Topic :: Utilities",