コード例 #1
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Client configuration")
    paramsList = [
        {
            "CMD_OPTION": "osclient-host",
            "USAGE":
            "The IP address of the server on which to install the OpenStack client packages. An admin \"rc\" file will also be installed",
            "PROMPT": "Enter the IP address of the client server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_OSCLIENT_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "NOVACLIENT",
        "DESCRIPTION": "NOVACLIENT Config parameters",
        "PRE_CONDITION": "CONFIG_CLIENT_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #2
0
def create_manifest(config, messages):
    client_host = config['CONFIG_CONTROLLER_HOST'].strip()
    manifestfile = "%s_osclient.pp" % client_host

    server = utils.ScriptRunner(client_host)
    server.append('echo $HOME')
    rc, root_home = server.execute()
    root_home = root_home.strip()

    homedir = os.path.expanduser('~')
    config['HOME_DIR'] = homedir

    uname, gname = utils.get_current_username()
    config['NO_ROOT_USER'], config['NO_ROOT_GROUP'] = uname, gname

    no_root_allinone = (client_host == utils.get_localhost_ip() and
                        root_home != homedir)
    config['NO_ROOT_USER_ALLINONE'] = no_root_allinone and True or False

    manifestdata = getManifestTemplate("openstack_client.pp")
    appendManifestFile(manifestfile, manifestdata)

    msg = ("File %s/keystonerc_admin has been created on OpenStack client host"
           " %s. To use the command line tools you need to source the file.")
    messages.append(msg % (root_home, client_host))

    if no_root_allinone:
        msg = ("Copy of keystonerc_admin file has been created for non-root "
               "user in %s.")
        messages.append(msg % homedir)
コード例 #3
0
ファイル: glance_200.py プロジェクト: pombredanne/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Glance configuration")
    paramsList = [
        {
            "CMD_OPTION": "glance-host",
            "USAGE": "The IP address of the server on which to install Glance",
            "PROMPT": "Enter the IP address of the Glance server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_GLANCE_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_GLANCE_DB_PW",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": True,
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_GLANCE_KS_PW",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": True,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "GLANCE",
        "DESCRIPTION": "Glance Config parameters",
        "PRE_CONDITION": "CONFIG_GLANCE_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #4
0
ファイル: qpid_002.py プロジェクト: MariusCC/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack QPID configuration")
    paramsList = [
                  {"CMD_OPTION"      : "qpid-host",
                   "USAGE"           : "The IP address of the server on which to install the QPID service",
                   "PROMPT"          : "Enter the IP address of the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "QPIDLANCE",
                  "DESCRIPTION"           : "QPID Config parameters",
                  "PRE_CONDITION"         : "CONFIG_NOVA_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #5
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Client configuration")
    paramsList = [
                  {"CMD_OPTION"      : "osclient-host",
                   "USAGE"           : "The IP address of the server on which to install the OpenStack client packages. An admin \"rc\" file will also be installed",
                   "PROMPT"          : "Enter the IP address of the client server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_OSCLIENT_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "NOVACLIENT",
                  "DESCRIPTION"           : "NOVACLIENT Config parameters",
                  "PRE_CONDITION"         : "CONFIG_CLIENT_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #6
0
def create_manifest(config, messages):
    client_host = config['CONFIG_CONTROLLER_HOST'].strip()
    manifestfile = "%s_osclient.pp" % client_host

    server = utils.ScriptRunner(client_host)
    server.append('echo $HOME')
    rc, root_home = server.execute()
    root_home = root_home.strip()

    homedir = os.path.expanduser('~')
    config['HOME_DIR'] = homedir

    uname, gname = utils.get_current_username()
    config['NO_ROOT_USER'], config['NO_ROOT_GROUP'] = uname, gname

    no_root_allinone = (client_host == utils.get_localhost_ip()
                        and root_home != homedir)
    config['NO_ROOT_USER_ALLINONE'] = no_root_allinone and True or False

    manifestdata = getManifestTemplate("openstack_client")
    appendManifestFile(manifestfile, manifestdata)

    msg = ("File %s/keystonerc_admin has been created on OpenStack client host"
           " %s. To use the command line tools you need to source the file.")
    messages.append(msg % (root_home, client_host))

    if no_root_allinone:
        msg = ("Copy of keystonerc_admin file has been created for non-root "
               "user in %s.")
        messages.append(msg % homedir)
コード例 #7
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack QPID configuration")
    paramsList = [
        {
            "CMD_OPTION": "qpid-host",
            "USAGE":
            "The IP address of the server on which to install the QPID service",
            "PROMPT": "Enter the IP address of the QPID service",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_QPID_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "QPIDLANCE",
        "DESCRIPTION": "QPID Config parameters",
        "PRE_CONDITION": "CONFIG_NOVA_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #8
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding MySQL OpenStack configuration")
    paramsList = [
        {
            "CMD_OPTION": "mysql-host",
            "USAGE": "The IP address of the server on which to install MySQL",
            "PROMPT": "Enter the IP address of the MySQL server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MYSQL_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "mysql-user",
            "USAGE": "Username for the MySQL admin user",
            "PROMPT": "Enter the username for the MySQL admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "root",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_MYSQL_USER",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "mysql-pw",
            "USAGE": "Password for the MySQL admin user",
            "PROMPT": "Enter the password for the MySQL admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MYSQL_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": True,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "MYSQL",
        "DESCRIPTION": "MySQL Config parameters",
        "PRE_CONDITION": lambda x: 'yes',
        "PRE_CONDITION_MATCH": "yes",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #9
0
ファイル: mysql_001.py プロジェクト: krast/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding MySQL OpenStack configuration")
    paramsList = [
        {
            "CMD_OPTION": "mysql-host",
            "USAGE": "The IP address of the server on which to install MySQL",
            "PROMPT": "Enter the IP address of the MySQL server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MYSQL_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False,
        },
        {
            "CMD_OPTION": "mysql-user",
            "USAGE": "Username for the MySQL admin user",
            "PROMPT": "Enter the username for the MySQL admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "root",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_MYSQL_USER",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": False,
            "CONDITION": False,
        },
        {
            "CMD_OPTION": "mysql-pw",
            "USAGE": "Password for the MySQL admin user",
            "PROMPT": "Enter the password for the MySQL admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MYSQL_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": True,
            "CONDITION": False,
        },
    ]

    groupDict = {
        "GROUP_NAME": "MYSQL",
        "DESCRIPTION": "MySQL Config parameters",
        "PRE_CONDITION": lambda x: "yes",
        "PRE_CONDITION_MATCH": "yes",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True,
    }

    controller.addGroup(groupDict, paramsList)
コード例 #10
0
ファイル: mariadb_003.py プロジェクト: xbezdick/packstack
def initConfig(controller):
    params = [
        {
            "CMD_OPTION": "mariadb-host",
            "PROMPT": "Enter the IP address of the MariaDB server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MARIADB_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False,
            "DEPRECATES": ['CONFIG_MYSQL_HOST']
        },
        {
            "CMD_OPTION": "mariadb-user",
            "USAGE": "Username for the MariaDB admin user",
            "PROMPT": "Enter the username for the MariaDB admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "root",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_MARIADB_USER",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": False,
            "CONDITION": False,
            "DEPRECATES": ['CONFIG_MYSQL_USER']
        },
        {
            "CMD_OPTION": "mariadb-pw",
            "USAGE": "Password for the MariaDB admin user",
            "PROMPT": "Enter the password for the MariaDB admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "PROCESSORS": [processors.process_password],
            "DEFAULT_VALUE": "PW_PLACEHOLDER",
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MARIADB_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": True,
            "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',
        "PRE_CONDITION_MATCH": "yes",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)
コード例 #11
0
ファイル: ceilometer_800.py プロジェクト: bcrochet/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Ceilometer configuration")
    paramsList = [
        {"CMD_OPTION"      : "ceilometer-host",
         "USAGE"           : ("The IP address of the server on which "
                              "to install Ceilometer"),
         "PROMPT"          : ("Enter the IP address of the Ceilometer "
                              "server"),
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_CEILOMETER_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False},

        {"CMD_OPTION"      : "ceilometer-secret",
         "USAGE"           : "Secret key for signing metering messages.",
         "PROMPT"          : "Enter the Ceilometer secret key",
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_not_empty],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_CEILOMETER_SECRET",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "CONDITION"       : False},

        {"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],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_CEILOMETER_KS_PW",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "CONDITION"       : False},
    ]

    groupDict = {"GROUP_NAME"          : "CEILOMETER",
                 "DESCRIPTION"         : "Ceilometer Config parameters",
                 "PRE_CONDITION"       : "CONFIG_CEILOMETER_INSTALL",
                 "PRE_CONDITION_MATCH" : "y",
                 "POST_CONDITION"      : False,
                 "POST_CONDITION_MATCH": True}
    controller.addGroup(groupDict, paramsList)
コード例 #12
0
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],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_MARIADB_HOST",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_MYSQL_HOST']},

        {"CMD_OPTION": "mariadb-user",
         "USAGE": "Username for the MariaDB admin user",
         "PROMPT": "Enter the username for the MariaDB admin user",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_not_empty],
         "DEFAULT_VALUE": "root",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_MARIADB_USER",
         "USE_DEFAULT": True,
         "NEED_CONFIRM": False,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_MYSQL_USER']},

        {"CMD_OPTION": "mariadb-pw",
         "USAGE": "Password for the MariaDB admin user",
         "PROMPT": "Enter the password for the MariaDB admin user",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_not_empty],
         "PROCESSORS": [processors.process_password],
         "DEFAULT_VALUE": "PW_PLACEHOLDER",
         "MASK_INPUT": True,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_MARIADB_PW",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": True,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_MYSQL_PW']},
    ]
    group = {"GROUP_NAME": "MARIADB",
             "DESCRIPTION": "MariaDB Config parameters",
             "PRE_CONDITION": lambda x: 'yes',
             "PRE_CONDITION_MATCH": "yes",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)
コード例 #13
0
ファイル: glance_200.py プロジェクト: chenyili/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Glance configuration")
    paramsList = [
                  {"CMD_OPTION"      : "glance-host",
                   "USAGE"           : "The IP address of the server on which to install Glance",
                   "PROMPT"          : "Enter the IP address of the Glance server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_GLANCE_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_GLANCE_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_GLANCE_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "GLANCE",
                  "DESCRIPTION"           : "Glance Config parameters",
                  "PRE_CONDITION"         : "CONFIG_GLANCE_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #14
0
ファイル: mysql_003.py プロジェクト: AnyBucket/packstack
def initConfig(controller):
    params = [
        {"CMD_OPTION": "mysql-host",
         "USAGE": ("The IP address of the server on which to install MySQL or "
                   "IP address of DB server to use if MySQL installation was "
                   "not selected"),
         "PROMPT": "Enter the IP address of the MySQL server",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_ssh],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_MYSQL_HOST",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"CMD_OPTION": "mysql-user",
         "USAGE": "Username for the MySQL admin user",
         "PROMPT": "Enter the username for the MySQL admin user",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_not_empty],
         "DEFAULT_VALUE": "root",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_MYSQL_USER",
         "USE_DEFAULT": True,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"CMD_OPTION": "mysql-pw",
         "USAGE": "Password for the MySQL admin user",
         "PROMPT": "Enter the password for the MySQL admin user",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_not_empty],
         "DEFAULT_VALUE": uuid.uuid4().hex[:16],
         "MASK_INPUT": True,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_MYSQL_PW",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": True,
         "CONDITION": False},
    ]
    group = {"GROUP_NAME": "MYSQL",
             "DESCRIPTION": "MySQL Config parameters",
             "PRE_CONDITION": lambda x: 'yes',
             "PRE_CONDITION_MATCH": "yes",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)
コード例 #15
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Nagios configuration")
    paramsList = [
        {
            "CMD_OPTION": "nagios-host",
            "USAGE":
            "The IP address of the server on which to install the Nagios server",
            "PROMPT": "Enter the IP address of the Nagios server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_NAGIOS_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_NAGIOS_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "NAGIOS",
        "DESCRIPTION": "Nagios Config parameters",
        "PRE_CONDITION": "CONFIG_NAGIOS_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #16
0
ファイル: nagios_910.py プロジェクト: ckyriakidou/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Nagios configuration")
    paramsList = [
                  {"CMD_OPTION"      : "nagios-host",
                   "USAGE"           : "The IP address of the server on which to install the Nagios server",
                   "PROMPT"          : "Enter the IP address of the Nagios server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NAGIOS_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NAGIOS_PW",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "NAGIOS",
                  "DESCRIPTION"           : "Nagios Config parameters",
                  "PRE_CONDITION"         : "CONFIG_NAGIOS_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #17
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Cinder configuration")
    paramsList = [
        {
            "CMD_OPTION": "cinder-host",
            "USAGE": "The IP address of the server on which to install Cinder",
            "PROMPT": "Enter the IP address of the Cinder server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_CINDER_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_CINDER_DB_PW",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": True,
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_CINDER_KS_PW",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": True,
            "CONDITION": False
        },
        {
            "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"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE":
            "y",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            False,
            "CONF_NAME":
            "CONFIG_CINDER_VOLUMES_CREATE",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDER",
        "DESCRIPTION": "Cinder Config parameters",
        "PRE_CONDITION": "CONFIG_CINDER_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    def check_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == config.get(
            'CONFIG_CINDER_VOLUMES_CREATE', 'n') == 'y')

    paramsList = [
        {
            "CMD_OPTION": "cinder-volumes-size",
            "USAGE": "Cinder's volumes group size",
            "PROMPT": "Enter Cinder's volumes group size",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "20G",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_CINDER_VOLUMES_SIZE",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDERVOLUMECREATE",
        "DESCRIPTION": "Cinder volume create Config parameters",
        "PRE_CONDITION": check_options,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #18
0
def initConfig(controller):
    params = [
        {
            "CMD_OPTION": "amqp-backend",
            "PROMPT": "Set the AMQP service backend",
            "OPTION_LIST": ["qpid", "rabbitmq"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE": "rabbitmq",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_BACKEND",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False,
            "DEPRECATES": ['CONFIG_AMQP_SERVER']
        },
        {
            "CMD_OPTION": "amqp-host",
            "PROMPT": "Enter the IP address of the AMQP service",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "amqp-enable-ssl",
            "PROMPT": "Enable SSL for the AMQP service?",
            "OPTION_LIST": ["y", "n"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_ENABLE_SSL",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "amqp-enable-auth",
            "PROMPT": "Enable Authentication for the AMQP service?",
            "OPTION_LIST": ["y", "n"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_ENABLE_AUTH",
            "USE_DEFAULT": False,
            "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,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)

    params = [
        {
            "CMD_OPTION": "amqp-nss-certdb-pw",
            "PROMPT": "Enter the password for NSS certificate database",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "PW_PLACEHOLDER",
            "PROCESSORS": [processors.process_password],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_NSS_CERTDB_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": True,
            "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",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)

    params = [
        {
            "CMD_OPTION": "amqp-auth-user",
            "PROMPT": "Enter the user for amqp authentication",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "amqp_user",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_AUTH_USER",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "amqp-auth-password",
            "PROMPT": "Enter the password for user authentication",
            "OPTION_LIST": ["y", "n"],
            "VALIDATORS": [validators.validate_not_empty],
            "PROCESSORS": [processors.process_password],
            "DEFAULT_VALUE": "PW_PLACEHOLDER",
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_AUTH_PASSWORD",
            "USE_DEFAULT": False,
            "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",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)
コード例 #19
0
ファイル: ceilometer_800.py プロジェクト: dm0-/packstack
def initConfig(controller):
    ceilometer_params = {
        "CEILOMETER": [
            {"CONF_NAME": "CONFIG_CEILOMETER_SECRET",
             "CMD_OPTION": "ceilometer-secret",
             "PROMPT": "Enter the Ceilometer secret key",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": uuid.uuid4().hex[:16],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CONF_NAME": "CONFIG_CEILOMETER_KS_PW",
             "CMD_OPTION": "ceilometer-ks-passwd",
             "PROMPT": "Enter the password for the Ceilometer Keystone access",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CMD_OPTION": "ceilometer-service-name",
             "PROMPT": "Enter the Ceilometer service name.",
             "OPTION_LIST": ['ceilometer', 'httpd'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "httpd",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_CEILOMETER_SERVICE_NAME',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CONF_NAME": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
             "CMD_OPTION": "ceilometer-coordination-backend",
             "PROMPT": "Enter the coordination driver",
             "OPTION_LIST": ['redis', 'none'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'redis',
             "MASK_INPUT": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CONF_NAME": "CONFIG_CEILOMETER_METERING_BACKEND",
             "CMD_OPTION": "ceilometer-metering-backend",
             "PROMPT": "Enter the metering backend to use",
             "OPTION_LIST": ['database', 'gnocchi'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'database',
             "MASK_INPUT": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],

        "MONGODB": [
            {"CMD_OPTION": "mongodb-host",
             "PROMPT": "Enter the host for the MongoDB server",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_MONGODB_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
        "REDIS": [
            {"CMD_OPTION": "redis-host",
             "PROMPT": "Enter the host for the Redis server",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False,
             "DEPRECATES": ["CONFIG_REDIS_MASTER_HOST"]},
            {"CMD_OPTION": "redis-port",
             "PROMPT": "Enter the port of the redis server(s)",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_port],
             "DEFAULT_VALUE": 6379,
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_PORT",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
    }
    update_params_usage(basedefs.PACKSTACK_DOC, ceilometer_params)

    ceilometer_groups = [
        {"GROUP_NAME": "CEILOMETER",
         "DESCRIPTION": "Ceilometer Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "MONGODB",
         "DESCRIPTION": "MONGODB Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "REDIS",
         "DESCRIPTION": "Redis Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
         "PRE_CONDITION_MATCH": "redis",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #20
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Heat configuration")
    parameters = [
        {"CMD_OPTION"      : "heat-host",
         "USAGE"           : ('The IP address of the server on which '
                              'to install Heat service'),
         "PROMPT"          : 'Enter the IP address of the Heat service',
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_HEAT_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },

        {"CMD_OPTION"      : "heat-mysql-password",
         "USAGE"	         : 'The password used by Heat user to authenticate against MySQL',
         "PROMPT"          : "Enter the password for the Heat MySQL user",
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_not_empty],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_DB_PW",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "CONDITION"       : False },

        {"CMD_OPTION"      : "heat-auth-encryption-key",
         "USAGE"           : "The encryption key to use for authentication info in database",
         "PROMPT"          : "Enter the authentication key for Heat to use for authenticate info in database",
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_not_empty],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_AUTH_ENC_KEY",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "CONDITION"       : False },

        {"CMD_OPTION"      : "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],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_KS_PW",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "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],
         "DEFAULT_VALUE"   : "n",
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_CLOUDWATCH_INSTALL",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "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],
         "DEFAULT_VALUE"   : "n",
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_CFN_INSTALL",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },
        ]
    group = {"GROUP_NAME"          : "Heat",
             "DESCRIPTION"         : "Heat Config parameters",
             "PRE_CONDITION"       : "CONFIG_HEAT_INSTALL",
             "PRE_CONDITION_MATCH" : "y",
             "POST_CONDITION"      : False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, parameters)

    parameters = [
        {"CMD_OPTION"      : "heat-api-cloudwatch-host",
         "USAGE"           : ('The IP address of the server on which '
                              'to install Heat CloudWatch API service'),
         "PROMPT"          : ('Enter the IP address of the Heat CloudWatch API '
                              'server'),
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_HEAT_CLOUDWATCH_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },
    ]

    def check_cloudwatch(config):
        return config["CONFIG_HEAT_INSTALL"] == 'y' and \
            config["CONFIG_HEAT_CLOUDWATCH_INSTALL"] == 'y'

    group = {"GROUP_NAME"          : "Heat CloudWatch API",
             "DESCRIPTION"         : "Heat CloudWatch API config parameters",
             "PRE_CONDITION"       : check_cloudwatch,
             "PRE_CONDITION_MATCH" : True,
             "POST_CONDITION"      : False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, parameters)

    parameters = [
        {"CMD_OPTION"      : "heat-api-cfn-host",
         "USAGE"           : ('The IP address of the server on which '
                              'to install Heat CloudFormation API service'),
         "PROMPT"          : ('Enter the IP address of the Heat CloudFormation '
                              'API server'),
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_HEAT_CFN_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },
    ]

    def check_cloudformation(config):
        return config["CONFIG_HEAT_INSTALL"] == 'y' and \
            config["CONFIG_HEAT_CFN_INSTALL"] == 'y'

    group = {"GROUP_NAME"          : "Heat CloudFormation API",
             "DESCRIPTION"         : "Heat CloudFormation API config parameters",
             "PRE_CONDITION"       : check_cloudformation,
             "PRE_CONDITION_MATCH" : True,
             "POST_CONDITION"      : False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, parameters)
コード例 #21
0
ファイル: ceilometer_800.py プロジェクト: Robbie2D2/packstack
def initConfig(controller):
    ceilometer_params = {
        "CEILOMETER": [
            {"CONF_NAME": "CONFIG_CEILOMETER_SECRET",
             "CMD_OPTION": "ceilometer-secret",
             "PROMPT": "Enter the Ceilometer secret key",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": uuid.uuid4().hex[:16],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CONF_NAME": "CONFIG_CEILOMETER_KS_PW",
             "CMD_OPTION": "ceilometer-ks-passwd",
             "PROMPT": "Enter the password for the Ceilometer Keystone access",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CMD_OPTION": "ceilometer-service-name",
             "PROMPT": "Enter the Ceilometer service name.",
             "OPTION_LIST": ['ceilometer', 'httpd'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "httpd",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_CEILOMETER_SERVICE_NAME',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CONF_NAME": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
             "CMD_OPTION": "ceilometer-coordination-backend",
             "PROMPT": "Enter the coordination driver",
             "OPTION_LIST": ['redis', 'none'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'redis',
             "MASK_INPUT": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CONF_NAME": "CONFIG_CEILOMETER_METERING_BACKEND",
             "CMD_OPTION": "ceilometer-metering-backend",
             "PROMPT": "Enter the metering backend to use",
             "OPTION_LIST": ['database', 'gnocchi'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'database',
             "MASK_INPUT": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],

        "MONGODB": [
            {"CMD_OPTION": "mongodb-host",
             "PROMPT": "Enter the host for the MongoDB server",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_MONGODB_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
        "REDIS": [
            {"CMD_OPTION": "redis-master-host",
             "PROMPT": "Enter the host for the Redis master server",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_MASTER_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False,
             "DEPRECATES": ["CONFIG_REDIS_HOST"]},
            {"CMD_OPTION": "redis-port",
             "PROMPT": "Enter the port of the redis server(s)",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_port],
             "DEFAULT_VALUE": 6379,
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_PORT",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-ha",
             "PROMPT": "Should redis try to use HA?",
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "n",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_HA",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-slaves",
             "PROMPT": "Enter the host for the redis slave servers",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_multi_ssh],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_SLAVE_HOSTS",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-sentinels",
             "PROMPT": "Enter the host for the redis sentinel servers",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_multi_ssh],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_SENTINEL_HOSTS",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-sentinel-contact",
             "PROMPT":
                 "Enter the IP address of the coordination redis sentinel",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ssh],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_SENTINEL_CONTACT_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-sentinel-port",
             "PROMPT": ("Enter the port on which the redis sentinel servers"
                        " listen"),
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_port],
             "DEFAULT_VALUE": 26379,
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_SENTINEL_PORT",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-sentinel-quorum",
             "PROMPT": (
                 "Enter the quorum value for the redis sentinel servers"),
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_integer],
             "DEFAULT_VALUE": 2,
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_SENTINEL_QUORUM",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-sentinel-master-name",
             "PROMPT": (
                 "Enter the logical name of the master server"),
             "OPTION_LIST": [r'[a-z]+'],
             "VALIDATORS": [validators.validate_regexp],
             "DEFAULT_VALUE": 'mymaster',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_REDIS_MASTER_NAME",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
    }
    update_params_usage(basedefs.PACKSTACK_DOC, ceilometer_params)

    ceilometer_groups = [
        {"GROUP_NAME": "CEILOMETER",
         "DESCRIPTION": "Ceilometer Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "MONGODB",
         "DESCRIPTION": "MONGODB Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "REDIS",
         "DESCRIPTION": "Redis Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
         "PRE_CONDITION_MATCH": "redis",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #22
0
ファイル: amqp_002.py プロジェクト: prvnmali/packstack
def initConfig(controller):
    params = [
        {"CMD_OPTION": "amqp-backend",
         "PROMPT": "Set the AMQP service backend",
         "OPTION_LIST": ["qpid", "rabbitmq"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "rabbitmq",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_AMQP_BACKEND",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_AMQP_SERVER']},

        {"CMD_OPTION": "amqp-host",
         "PROMPT": "Enter the host for the AMQP service",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_ssh],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_HOST",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"CMD_OPTION": "amqp-enable-ssl",
         "PROMPT": "Enable SSL for the AMQP service?",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "n",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_AMQP_ENABLE_SSL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"CMD_OPTION": "amqp-enable-auth",
         "PROMPT": "Enable Authentication for the AMQP service?",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "n",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_AMQP_ENABLE_AUTH",
         "USE_DEFAULT": False,
         "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,
             "PRE_CONDITION_MATCH": True,
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)

    params = [
        {"CMD_OPTION": "amqp-nss-certdb-pw",
         "PROMPT": "Enter the password for NSS certificate database",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_not_empty],
         "DEFAULT_VALUE": "PW_PLACEHOLDER",
         "PROCESSORS": [processors.process_password],
         "MASK_INPUT": True,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_NSS_CERTDB_PW",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": True,
         "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",
             "PRE_CONDITION_MATCH": "y",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)

    params = [
        {"CMD_OPTION": "amqp-auth-user",
         "PROMPT": "Enter the user for amqp authentication",
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_not_empty],
         "DEFAULT_VALUE": "amqp_user",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_AUTH_USER",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"CMD_OPTION": "amqp-auth-password",
         "PROMPT": "Enter the password for user authentication",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_not_empty],
         "PROCESSORS": [processors.process_password],
         "DEFAULT_VALUE": "PW_PLACEHOLDER",
         "MASK_INPUT": True,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_AUTH_PASSWORD",
         "USE_DEFAULT": False,
         "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",
             "PRE_CONDITION_MATCH": "y",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)
コード例 #23
0
ファイル: cinder_250.py プロジェクト: chenyili/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Cinder configuration")
    paramsList = [
                  {"CMD_OPTION"      : "cinder-host",
                   "USAGE"           : "The IP address of the server on which to install Cinder",
                   "PROMPT"          : "Enter the IP address of the Cinder server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_CINDER_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "cinder-backend",
                   "USAGE"           : ("The Cinder backend to use, valid options are: "
                                        "lvm, gluster, nfs, vmdk"),
                   "PROMPT"          : "Enter the Cinder backend to be configured",
                   "OPTION_LIST"     : ["lvm", "gluster", "nfs", "vmdk"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "lvm",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_BACKEND",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDER",
                  "DESCRIPTION"           : "Cinder Config parameters",
                  "PRE_CONDITION"         : "CONFIG_CINDER_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_lvm_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'lvm')

    paramsList = [
                  {"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"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "y",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_VOLUMES_CREATE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDERVOLUMECREATE",
                  "DESCRIPTION"           : "Cinder volume create Config parameters",
                  "PRE_CONDITION"         : check_lvm_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_lvm_vg_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'lvm' and
                config.get('CONFIG_CINDER_VOLUMES_CREATE', 'y') == 'y')

    paramsList = [
                  {"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],
                   "DEFAULT_VALUE"   : "20G",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_VOLUMES_SIZE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDERVOLUMESIZE",
                  "DESCRIPTION"           : "Cinder volume size Config parameters",
                  "PRE_CONDITION"         : check_lvm_vg_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_gluster_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'gluster')

    paramsList = [
                  {"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}:/.*'", \
                    "^'[a-zA-Z0-9][\-\.\w]*:/.*'"],
                   "VALIDATORS"      : [validators.validate_multi_regexp],
                   "PROCESSORS"      : [processors.process_add_quotes_around_values],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_CINDER_GLUSTER_MOUNTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ]

    groupDict = { "GROUP_NAME"            : "CINDERGLUSTERMOUNTS",
                  "DESCRIPTION"           : "Cinder gluster Config parameters",
                  "PRE_CONDITION"         : check_gluster_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_nfs_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'nfs')

    paramsList = [
                  {"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}:/.*'"],
                   "VALIDATORS"      : [validators.validate_multi_regexp],
                   "PROCESSORS"      : [processors.process_add_quotes_around_values],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_CINDER_NFS_MOUNTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ]

    groupDict = { "GROUP_NAME"            : "CINDERNFSMOUNTS",
                  "DESCRIPTION"           : "Cinder NFS Config parameters",
                  "PRE_CONDITION"         : check_nfs_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_vcenter_options(config):
        return (config.get('CONFIG_NOVA_INSTALL', 'y') == 'n' and
                config.get('CONFIG_VMWARE_BACKEND', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'vmdk')

    paramsList = [
                  {"CMD_OPTION"      : "cinder-vcenter-host",
                   "USAGE"           : ("The IP address of the VMware vCenter datastore"),
                   "PROMPT"          : ("Enter the IP address of the VMware vCenter datastore to use with Cinder"),
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_VCENTER_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "cinder-vcenter-username",
                   "USAGE"           : ("The username to authenticate to VMware vCenter datastore"),
                   "PROMPT"          : ("Enter the username to authenticate on VMware vCenter datastore"),
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_VCENTER_USER",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False,},
                   {"CMD_OPTION"      : "cinder-vcenter-password",
                   "USAGE"           : ("The password to authenticate to VMware vCenter datastore"),
                   "PROMPT"          : ("Enter the password to authenticate on VMware vCenter datastore"),
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_VCENTER_PASSWORD",
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False,},
                  ]

    groupDict = { "GROUP_NAME"            : "CINDERVCENTEROPTIONS",
                  "DESCRIPTION"           : "Cinder VMware vCenter Config parameters",
                  "PRE_CONDITION"         : check_vcenter_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #24
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    logging.debug("Adding OpenStack Quantum configuration")

    conf_params = {
        "QUANTUM" : [
            {"CMD_OPTION"      : "quantum-server-host",
             "USAGE"           : "The IP addresses of the server on which to install the Quantum server",
             "PROMPT"          : "Enter the IP address of the Quantum server",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_SERVER_HOST",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-use-namespaces",
             "USAGE"           : "Enable network namespaces for Quantum",
             "PROMPT"          : "Should Quantum use network namespaces?",
             "OPTION_LIST"     : ["y", "n"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "y",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_USE_NAMESPACES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-ks-password",
             "USAGE"           : "The password to use for Quantum to authenticate with Keystone",
             "PROMPT"          : "Enter the password for Quantum Keystone access",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_QUANTUM_KS_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-db-password",
             "USAGE"           : "The password to use for Quantum to access DB",
             "PROMPT"          : "Enter the password for Quantum DB access",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_QUANTUM_DB_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-l3-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Quantum L3 agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Quantum L3 agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_L3_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-l3-ext-bridge",
             "USAGE"           : "The name of the bridge that the Quantum L3 agent will use for external traffic",
             "PROMPT"          : "Enter the name of the bridge that the Quantum L3 agent will use for external traffic",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : "br-ex",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_L3_EXT_BRIDGE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-dhcp-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Quantum DHCP plugin",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install Quantum DHCP plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_DHCP_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-l2-plugin",
             "USAGE"           : "The name of the L2 plugin to be used with Quantum",
             "PROMPT"          : "Enter the name of the L2 plugin to be used with Quantum",
             "OPTION_LIST"     : ["linuxbridge", "openvswitch"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "openvswitch",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_QUANTUM_L2_PLUGIN",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-metadata-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Quantum metadata agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Quantum metadata agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_METADATA_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-metadata-pw",
             "USAGE"           : "A comma separated list of IP addresses on which to install Quantum metadata agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Quantum metadata agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_QUANTUM_METADATA_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            ],
        "QUANTUM_LB_PLUGIN" : [
            {"CMD_OPTION"      : "quantum-lb-tenant-network-type",
             "USAGE"           : "The type of network to allocate for tenant networks",
             "PROMPT"          : "Enter the type of network to allocate for tenant networks",
             "OPTION_LIST"     : ["local", "vlan"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_QUANTUM_LB_TENANT_NETWORK_TYPE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-lb-vlan-ranges",
             "USAGE"           : "A comma separated list of VLAN ranges for the Quantum linuxbridge plugin",
             "PROMPT"          : "Enter a comma separated list of VLAN ranges for the Quantum linuxbridge plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_LB_VLAN_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-lb-interface-mappings",
             "USAGE"           : "A comma separated list of interface mappings for the Quantum linuxbridge plugin",
             "PROMPT"          : "Enter a comma separated list of interface mappings for the Quantum linuxbridge plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_LB_INTERFACE_MAPPINGS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "QUANTUM_OVS_PLUGIN" : [
            {"CMD_OPTION"      : "quantum-ovs-tenant-network-type",
             "USAGE"           : "Type of network to allocate for tenant networks",
             "PROMPT"          : "Enter the type of network to allocate for tenant networks",
             "OPTION_LIST"     : ["local", "vlan", "gre"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_QUANTUM_OVS_TENANT_NETWORK_TYPE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-ovs-vlan-ranges",
             "USAGE"           : "A comma separated list of VLAN ranges for the Quantum openvswitch plugin",
             "PROMPT"          : "Enter a comma separated list of VLAN ranges for the Quantum openvswitch plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_OVS_VLAN_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "quantum-ovs-bridge-mappings",
             "USAGE"           : "A comma separated list of bridge mappings for the Quantum openvswitch plugin",
             "PROMPT"          : "Enter a comma separated list of bridge mappings for the Quantum openvswitch plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_QUANTUM_OVS_BRIDGE_MAPPINGS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        }

    def use_linuxbridge(config):
        return config['CONFIG_QUANTUM_INSTALL'] == 'y' and \
               config['CONFIG_QUANTUM_L2_PLUGIN'] == 'linuxbridge'

    def use_openvswitch(config):
        return config['CONFIG_QUANTUM_INSTALL'] == 'y' and \
               config['CONFIG_QUANTUM_L2_PLUGIN'] == 'openvswitch'

    conf_groups = [
        { "GROUP_NAME"            : "QUANTUM",
          "DESCRIPTION"           : "Quantum config",
          "PRE_CONDITION"         : "CONFIG_QUANTUM_INSTALL",
          "PRE_CONDITION_MATCH"   : "y",
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "QUANTUM_LB_PLUGIN",
          "DESCRIPTION"           : "Quantum LB plugin config",
          "PRE_CONDITION"         : use_linuxbridge,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "QUANTUM_OVS_PLUGIN",
          "DESCRIPTION"           : "Quantum OVS plugin config",
          "PRE_CONDITION"         : use_openvswitch,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        ]

    for group in conf_groups:
        paramList = conf_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #25
0
def initConfig(controller):
    ceilometer_params = {
        "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],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "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],
                "DEFAULT_VALUE":
                "PW_PLACEHOLDER",
                "PROCESSORS": [processors.process_password],
                "MASK_INPUT":
                True,
                "LOOSE_VALIDATION":
                False,
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                True,
                "CONDITION":
                False
            },
            {
                "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],
                "DEFAULT_VALUE": 'redis',
                "MASK_INPUT": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "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],
                "DEFAULT_VALUE":
                utils.get_localhost_ip(),
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                True,
                "CONF_NAME":
                "CONFIG_MONGODB_HOST",
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            },
        ],
        "REDIS": [
            {
                "CMD_OPTION":
                "redis-host",
                "USAGE": ("The IP address of the server on which to install "
                          "redis"),
                "PROMPT":
                "Enter the IP address of the redis server",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE":
                utils.get_localhost_ip(),
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                True,
                "CONF_NAME":
                "CONFIG_REDIS_HOST",
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            },
            {
                "CMD_OPTION": "redis-port",
                "USAGE": "The port on which the redis server listens",
                "PROMPT": "Enter the port of the redis server",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_port],
                "DEFAULT_VALUE": 6379,
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_REDIS_PORT",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
    }

    ceilometer_groups = [
        {
            "GROUP_NAME": "CEILOMETER",
            "DESCRIPTION": "Ceilometer Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "MONGODB",
            "DESCRIPTION": "MONGODB Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "REDIS",
            "DESCRIPTION": "Redis Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
            "PRE_CONDITION_MATCH": "redis",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #26
0
ファイル: prescript_000.py プロジェクト: snowflying/packstack
def initConfig(controller):
    default_ssh_key = os.path.join(os.environ["HOME"], ".ssh/*.pub")
    default_ssh_key = (glob.glob(default_ssh_key) + [""])[0]
    params = [
        {"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"),
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_file, validators.validate_sshkey],
         "PROCESSORS": [processors.process_ssh_key],
         "DEFAULT_VALUE": default_ssh_key,
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_SSH_KEY",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"CMD_OPTION": "mysql-install",
         "USAGE": "Set to 'y' if you would like Packstack to install MySQL",
         "PROMPT": "Should Packstack install MySQL DB",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_MYSQL_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"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)",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_GLANCE_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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"),
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_CINDER_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_NOVA_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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"),
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_NEUTRON_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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)",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_HORIZON_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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)",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_SWIFT_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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)",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_CEILOMETER_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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)",
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": "n",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_HEAT_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_CLIENT_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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."),
         "OPTION_LIST": [],
         "DEFAULT_VALUE": '',
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_NTP_SERVERS",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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"),
         "OPTION_LIST": ["y", "n"],
         "VALIDATORS": [validators.validate_options],
         "DEFAULT_VALUE": 'y',
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_NAGIOS_INSTALL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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."),
         "OPTION_LIST": [],
         "DEFAULT_VALUE": '',
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "EXCLUDE_SERVERS",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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",
         "VALIDATORS": [validators.validate_options],
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_DEBUG_MODE",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"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,
                        validators.validate_ssh],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_CEILOMETER_HOST',
                        'CONFIG_CINDER_HOST',
                        'CONFIG_GLANCE_HOST',
                        'CONFIG_HORIZON_HOST',
                        'CONFIG_HEAT_HOST',
                        'CONFIG_KEYSTONE_HOST',
                        'CONFIG_NAGIOS_HOST',
                        'CONFIG_NEUTRON_SERVER_HOST',
                        'CONFIG_NEUTRON_LBAAS_HOSTS',
                        'CONFIG_NOVA_API_HOST',
                        'CONFIG_NOVA_CERT_HOST',
                        'CONFIG_NOVA_VNCPROXY_HOST',
                        'CONFIG_NOVA_SCHED_HOST',
                        'CONFIG_OSCLIENT_HOST',
                        'CONFIG_SWIFT_PROXY_HOSTS']},

        {"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"),
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_multi_ip,
                        validators.validate_multi_ssh],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_NOVA_COMPUTE_HOSTS']},

        {"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": [],
         "VALIDATORS": [validators.validate_multi_ip,
                        validators.validate_multi_ssh],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False,
         "DEPRECATES": ['CONFIG_NEUTRON_L3_HOSTS',
                        'CONFIG_NEUTRON_DHCP_HOSTS',
                        'CONFIG_NEUTRON_METADATA_HOSTS',
                        '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"),
         "OPTION_LIST": ["y", "n"],
         "DEFAULT_VALUE": "n",
         "VALIDATORS": [validators.validate_options],
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_VMWARE_BACKEND",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},
    ]
    group = {"GROUP_NAME": "GLOBAL",
             "DESCRIPTION": "Global Options",
             "PRE_CONDITION": lambda x: 'yes',
             "PRE_CONDITION_MATCH": "yes",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)

    def use_vcenter(config):
        return (config['CONFIG_NOVA_INSTALL'] == 'y' and
                config['CONFIG_VMWARE_BACKEND'] == 'y')

    params = [
        {"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"),
         "OPTION_LIST": [],
         "VALIDATORS": [validators.validate_ip],
         "DEFAULT_VALUE": "",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_VCENTER_HOST",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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": "",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_VCENTER_USER",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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": "",
         "MASK_INPUT": True,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_VCENTER_PASSWORD",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_VCENTER_CLUSTER_NAME",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},
    ]
    group = {"GROUP_NAME": "VMWARE",
             "DESCRIPTION": "vCenter Config Parameters",
             "PRE_CONDITION": use_vcenter,
             "PRE_CONDITION_MATCH": True,
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)
コード例 #27
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Ceilometer configuration")

    ceilometer_params = {
        "CEILOMETER": [
            {
                "CMD_OPTION":
                "ceilometer-host",
                "USAGE": ("The IP address of the server on which "
                          "to install Ceilometer"),
                "PROMPT": ("Enter the IP address of the Ceilometer "
                           "server"),
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE":
                utils.get_localhost_ip(),
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                True,
                "CONF_NAME":
                "CONFIG_CEILOMETER_HOST",
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            },
            {
                "CMD_OPTION": "ceilometer-secret",
                "USAGE": "Secret key for signing metering messages.",
                "PROMPT": "Enter the Ceilometer secret key",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_CEILOMETER_SECRET",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "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],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_CEILOMETER_KS_PW",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
        ],
        "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],
                "DEFAULT_VALUE":
                utils.get_localhost_ip(),
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                True,
                "CONF_NAME":
                "CONFIG_MONGODB_HOST",
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            },
        ],
    }

    ceilometer_groups = [
        {
            "GROUP_NAME": "CEILOMETER",
            "DESCRIPTION": "Ceilometer Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "MONGODB",
            "DESCRIPTION": "MONGODB Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
    ]

    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #28
0
def initConfig(controller):
    ceilometer_params = {
        "CEILOMETER": [
            {
                "CONF_NAME": "CONFIG_CEILOMETER_SECRET",
                "CMD_OPTION": "ceilometer-secret",
                "PROMPT": "Enter the Ceilometer secret key",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CONF_NAME": "CONFIG_CEILOMETER_KS_PW",
                "CMD_OPTION": "ceilometer-ks-passwd",
                "PROMPT":
                "Enter the password for the Ceilometer Keystone access",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "PW_PLACEHOLDER",
                "PROCESSORS": [processors.process_password],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "USE_DEFAULT": False,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CONF_NAME": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
                "CMD_OPTION": "ceilometer-coordination-backend",
                "PROMPT": "Enter the coordination driver",
                "OPTION_LIST": ['redis', 'none'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": 'redis',
                "MASK_INPUT": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "MONGODB": [
            {
                "CMD_OPTION": "mongodb-host",
                "PROMPT": "Enter the IP address of the MongoDB server",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_MONGODB_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "REDIS": [
            {
                "CMD_OPTION": "redis-master-host",
                "PROMPT": "Enter the IP address of the redis master server",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_MASTER_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False,
                "DEPRECATES": ["CONFIG_REDIS_HOST"]
            },
            {
                "CMD_OPTION": "redis-port",
                "PROMPT": "Enter the port of the redis server(s)",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_port],
                "DEFAULT_VALUE": 6379,
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_PORT",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "redis-ha",
                "PROMPT": "Should redis try to use HA?",
                "OPTION_LIST": ["y", "n"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "n",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_HA",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "redis-slaves",
                "PROMPT": "Enter the IP addresses of the redis slave servers",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_multi_ssh],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_SLAVE_HOSTS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "redis-sentinels",
                "PROMPT":
                "Enter the IP addresses of the redis sentinel servers",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_multi_ssh],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_SENTINEL_HOSTS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "redis-sentinel-contact",
                "PROMPT":
                "Enter the IP address of the coordination redis sentinel",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_SENTINEL_CONTACT_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION":
                "redis-sentinel-port",
                "PROMPT": ("Enter the port on which the redis sentinel servers"
                           " listen"),
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_port],
                "DEFAULT_VALUE":
                26379,
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                "CONFIG_REDIS_SENTINEL_PORT",
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            },
            {
                "CMD_OPTION": "redis-sentinel-quorum",
                "PROMPT":
                ("Enter the quorum value for the redis sentinel servers"),
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_integer],
                "DEFAULT_VALUE": 2,
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_SENTINEL_QUORUM",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "redis-sentinel-master-name",
                "PROMPT": ("Enter the logical name of the master server"),
                "OPTION_LIST": [r'[a-z]+'],
                "VALIDATORS": [validators.validate_regexp],
                "DEFAULT_VALUE": 'mymaster',
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_MASTER_NAME",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
    }
    update_params_usage(basedefs.PACKSTACK_DOC, ceilometer_params)

    ceilometer_groups = [
        {
            "GROUP_NAME": "CEILOMETER",
            "DESCRIPTION": "Ceilometer Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "MONGODB",
            "DESCRIPTION": "MONGODB Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "REDIS",
            "DESCRIPTION": "Redis Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
            "PRE_CONDITION_MATCH": "redis",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #29
0
def initConfig(controller):
    default_ssh_key = os.path.join(os.environ["HOME"], ".ssh/*.pub")
    default_ssh_key = (glob.glob(default_ssh_key) + [""])[0]
    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"
             ),
             "OPTION_LIST": [],
             "VALIDATORS": [
                validators.validate_file,
                validators.validate_sshkey
             ],
             "PROCESSORS": [processors.process_ssh_key],
             "DEFAULT_VALUE": default_ssh_key,
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_SSH_KEY",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_MARIADB_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False,
             "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)"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_GLANCE_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_CINDER_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_NOVA_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_NEUTRON_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_HORIZON_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_SWIFT_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_CEILOMETER_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "n",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_HEAT_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "y",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_CLIENT_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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."),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": '',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_NTP_SERVERS",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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"
             ),
             "OPTION_LIST": ["y", "n"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'y',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_NAGIOS_INSTALL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": '',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "EXCLUDE_SERVERS",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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",
             "VALIDATORS": [validators.validate_options],
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_DEBUG_MODE",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"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,
                            validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False,
             "DEPRECATES": ['CONFIG_CEILOMETER_HOST',
                            'CONFIG_CINDER_HOST',
                            'CONFIG_GLANCE_HOST',
                            'CONFIG_HORIZON_HOST',
                            'CONFIG_HEAT_HOST',
                            'CONFIG_KEYSTONE_HOST',
                            'CONFIG_NAGIOS_HOST',
                            'CONFIG_NEUTRON_SERVER_HOST',
                            'CONFIG_NEUTRON_LBAAS_HOSTS',
                            'CONFIG_NOVA_API_HOST',
                            'CONFIG_NOVA_CERT_HOST',
                            'CONFIG_NOVA_VNCPROXY_HOST',
                            'CONFIG_NOVA_SCHED_HOST',
                            'CONFIG_OSCLIENT_HOST',
                            'CONFIG_SWIFT_PROXY_HOSTS']},

            {"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"
             ),
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_multi_ip,
                            validators.validate_multi_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False,
             "DEPRECATES": ['CONFIG_NOVA_COMPUTE_HOSTS']},

            {"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": [],
             "VALIDATORS": [validators.validate_multi_ip,
                            validators.validate_multi_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False,
             "DEPRECATES": ['CONFIG_NEUTRON_L3_HOSTS',
                            'CONFIG_NEUTRON_DHCP_HOSTS',
                            'CONFIG_NEUTRON_METADATA_HOSTS',
                            '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"
             ),
             "OPTION_LIST": ["y", "n"],
             "DEFAULT_VALUE": "n",
             "VALIDATORS": [validators.validate_options],
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_VMWARE_BACKEND",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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"
             ),
             "OPTION_LIST": ["y", "n"],
             "DEFAULT_VALUE": "n",
             "VALIDATORS": [validators.validate_options],
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_VMWARE_BACKEND",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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 unsupported "
                "parameters"
             ),
             "OPTION_LIST": ["y", "n"],
             "DEFAULT_VALUE": "n",
             "VALIDATORS": [validators.validate_options],
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_UNSUPPORTED",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],

        "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"
             ),
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ip],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_VCENTER_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_VCENTER_USER",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": "",
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_VCENTER_PASSWORD",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_VCENTER_CLUSTER_NAME",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],

        "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,
                            validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ]
    }

    def use_vcenter(config):
        return (config['CONFIG_NOVA_INSTALL'] == 'y' and
                config['CONFIG_VMWARE_BACKEND'] == 'y')

    def unsupported_enabled(config):
        return config['CONFIG_UNSUPPORTED'] == 'y'

    groups = [
        {"GROUP_NAME": "GLOBAL",
         "DESCRIPTION": "Global Options",
         "PRE_CONDITION": lambda x: 'yes',
         "PRE_CONDITION_MATCH": "yes",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "VMWARE",
         "DESCRIPTION": "vCenter Config Parameters",
         "PRE_CONDITION": use_vcenter,
         "PRE_CONDITION_MATCH": True,
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "UNSUPPORTED",
         "DESCRIPTION": "Global unsupported options",
         "PRE_CONDITION": unsupported_enabled,
         "PRE_CONDITION_MATCH": True,
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True}
    ]
    for group in groups:
        controller.addGroup(group, params[group['GROUP_NAME']])
コード例 #30
0
ファイル: nova_300.py プロジェクト: syspimp/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    if platform.linux_distribution()[0] == "Fedora":
        primary_netif = "em1"
        secondary_netif = "em2"
    else:
        primary_netif = "eth0"
        secondary_netif = "eth1"

    nova_params = {
            "NOVA" : [
                  {"CMD_OPTION"      : "novaapi-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova API service",
                   "PROMPT"          : "Enter the IP address of the Nova API service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_API_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novacert-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Cert service",
                   "PROMPT"          : "Enter the IP address of the Nova Cert service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_CERT_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novavncproxy-hosts",
                   "USAGE"           : "The IP address of the server on which to install the Nova VNC proxy",
                   "PROMPT"          : "Enter the IP address of the Nova VNC proxy",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_VNCPROXY_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novacompute-hosts",
                   "USAGE"           : "A comma separated list of IP addresses on which to install the Nova Compute services",
                   "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Nova Compute services",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty, validators.validate_multi_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_COMPUTE_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novaconductor-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Conductor service",
                   "PROMPT"          : "Enter the IP address of the Nova Conductor service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_CONDUCTOR_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novasched-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Scheduler service",
                   "PROMPT"          : "Enter the IP address of the Nova Scheduler service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_float],
                   "DEFAULT_VALUE"   : 16.0,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_float],
                   "DEFAULT_VALUE"   : 1.5,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
             "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"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : secondary_netif,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_COMPUTE_PRIVIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-hosts",
                   "USAGE"           : "The list of IP addresses of the server on which to install the Nova Network service",
                   "PROMPT"          : "Enter list of IP addresses on which to install the Nova Network service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_multi_ip, validators.validate_multi_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : "nova.network.manager.FlatDHCPManager",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_MANAGER",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : primary_netif,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_PUBIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : secondary_netif,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_PRIVIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "192.168.32.0/22",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_FIXEDRANGE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "10.3.4.0/22",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_FLOATRANGE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-default-floating-pool",
                   "USAGE"           : "Name of the default floating pool to which the specified floating ranges are added to",
                   "PROMPT"          : "What should the default floating pool be called?",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "nova",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_DEFAULTFLOATINGPOOL",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "n",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_AUTOASSIGNFLOATINGIP",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
             "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],
                   "DEFAULT_VALUE"   : 100,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_VLAN_START",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : 1,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_NUMBER",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : 255,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_SIZE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
              }

    def use_nova_network(config):
        return config['CONFIG_NOVA_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_INSTALL'] != 'y'

    def use_nova_network_vlan(config):
        manager = 'nova.network.manager.VlanManager'
        return config['CONFIG_NOVA_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_INSTALL'] != 'y' and \
               config['CONFIG_NOVA_NETWORK_MANAGER'] == manager

    nova_groups = [
         {"GROUP_NAME"            : "NOVA",
          "DESCRIPTION"           : "Nova Options",
          "PRE_CONDITION"         : "CONFIG_NOVA_INSTALL",
          "PRE_CONDITION_MATCH"   : "y",
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
         {"GROUP_NAME"            : "NOVA_NETWORK",
          "DESCRIPTION"           : "Nova Network Options",
          "PRE_CONDITION"         : use_nova_network,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
         {"GROUP_NAME"            : "NOVA_NETWORK_VLAN",
          "DESCRIPTION"           : "Nova Network VLAN Options",
          "PRE_CONDITION"         : use_nova_network_vlan,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
        ]

    for group in nova_groups:
        paramList = nova_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #31
0
ファイル: amqp_002.py プロジェクト: hguemar/packstack
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],
            "DEFAULT_VALUE":
            "rabbitmq",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            False,
            "CONF_NAME":
            "CONFIG_AMQP_BACKEND",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False,
            "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],
            "DEFAULT_VALUE":
            utils.get_localhost_ip(),
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_AMQP_HOST",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "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],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_ENABLE_SSL",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_ENABLE_AUTH",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]
    group = {
        "GROUP_NAME": "AMQP",
        "DESCRIPTION": "AMQP Config parameters",
        "PRE_CONDITION": False,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)

    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],
            "DEFAULT_VALUE":
            "PW_PLACEHOLDER",
            "PROCESSORS": [processors.process_password],
            "MASK_INPUT":
            True,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_AMQP_NSS_CERTDB_PW",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            True,
            "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],
            "DEFAULT_VALUE":
            "5671",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_AMQP_SSL_PORT",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "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": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE":
            "/etc/pki/tls/certs/amqp_selfcert.pem",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_AMQP_SSL_CERT_FILE",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "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],
            "DEFAULT_VALUE":
            "/etc/pki/tls/private/amqp_selfkey.pem",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_AMQP_SSL_KEY_FILE",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "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],
            "DEFAULT_VALUE": "y",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_SSL_SELF_SIGNED",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]
    group = {
        "GROUP_NAME": "AMQPSSL",
        "DESCRIPTION": "AMQP Config SSL parameters",
        "PRE_CONDITION": "CONFIG_AMQP_ENABLE_SSL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)

    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],
            "DEFAULT_VALUE": "amqp_user",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_AUTH_USER",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "PROCESSORS": [processors.process_password],
            "DEFAULT_VALUE": "PW_PLACEHOLDER",
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_AUTH_PASSWORD",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": True,
            "CONDITION": False
        },
    ]
    group = {
        "GROUP_NAME": "AMQPAUTH",
        "DESCRIPTION": "AMQP Config Athentication parameters",
        "PRE_CONDITION": "CONFIG_AMQP_ENABLE_AUTH",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)
コード例 #32
0
ファイル: keystone_100.py プロジェクト: arvisha16/packstack
def initConfig(controller):
    keystone_params = {
        "KEYSTONE": [  # base keystone options
            {
                "CMD_OPTION": "keystone-db-passwd",
                "PROMPT": "Enter the password for the Keystone DB access",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "PROCESSORS": [processors.process_password],
                "DEFAULT_VALUE": "PW_PLACEHOLDER",
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_DB_PW",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": True,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                'keystone-db-purge-enable',
                "PROMPT":
                ("Enter y if cron job for removing soft deleted DB rows "
                 "should be created"),
                "OPTION_LIST": ['y', 'n'],
                "VALIDATORS": [validators.validate_not_empty],
                "PROCESSORS": [processors.process_bool],
                "DEFAULT_VALUE":
                'y',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_DB_PURGE_ENABLE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                True,
                "CONDITION":
                False
            }, {
                "CMD_OPTION": "keystone-region",
                "PROMPT": "Region name",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "RegionOne",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_REGION",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-admin-token",
                "PROMPT": "The token to use for the Keystone service api",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": uuid.uuid4().hex,
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_TOKEN",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-admin-email",
                "PROMPT":
                "Enter the email address for the Keystone admin user",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "root@localhost",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_EMAIL",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-admin-username",
                "PROMPT": "Enter the username for the Keystone admin user",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "admin",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_USERNAME",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-admin-passwd",
                "PROMPT": "Enter the password for the Keystone admin user",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "PW_PLACEHOLDER",
                "PROCESSORS": [processors.process_password],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_PW",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": True,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-demo-passwd",
                "PROMPT": "Enter the password for the Keystone demo user",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "PW_PLACEHOLDER",
                "PROCESSORS": [processors.process_password],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_KEYSTONE_DEMO_PW",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": True,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-api-version",
                "PROMPT": "Enter the Keystone API version string.",
                "OPTION_LIST": ['v2.0', 'v3'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": 'v3',
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_API_VERSION',
                "USE_DEFAULT": True,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-token-format",
                "PROMPT": "Enter the Keystone token format.",
                "OPTION_LIST": ['FERNET'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": 'FERNET',
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_TOKEN_FORMAT',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-identity-backend",
                "PROMPT": "Enter the Keystone identity backend type.",
                "OPTION_LIST": ['sql', 'ldap'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "sql",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_IDENTITY_BACKEND',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }
        ],
        "KEYSTONE_LDAP": [  # keystone ldap identity backend options
            {
                "CMD_OPTION": "keystone-ldap-url",
                "PROMPT": "Enter the Keystone LDAP backend URL.",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ldap_url],
                "DEFAULT_VALUE": host_to_ldap_url(utils.get_localhost_ip()),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_URL',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-dn",
                "PROMPT": "Enter the Keystone LDAP user DN.",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ldap_dn],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_DN',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-password",
                "PROMPT": "Enter the Keystone LDAP user password.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "PROCESSORS": [processors.process_password],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_PASSWORD',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                "keystone-ldap-suffix",
                "PROMPT":
                "Enter the Keystone LDAP suffix.",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_not_empty, validators.validate_ldap_dn],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_SUFFIX',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION": "keystone-ldap-query-scope",
                "PROMPT": "Enter the Keystone LDAP query scope.",
                "OPTION_LIST": ['base', 'one', 'sub'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "one",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_QUERY_SCOPE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-page-size",
                "PROMPT": "Enter the Keystone LDAP query page size.",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_integer],
                "DEFAULT_VALUE": "-1",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_PAGE_SIZE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-subtree",
                "PROMPT":
                "Enter the Keystone LDAP user subtree.",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_not_empty, validators.validate_ldap_dn],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_SUBTREE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION": "keystone-ldap-user-filter",
                "PROMPT": "Enter the Keystone LDAP user query filter.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_FILTER',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-objectclass",
                "PROMPT": "Enter the Keystone LDAP user objectclass.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_OBJECTCLASS',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-id-attribute",
                "PROMPT": "Enter the Keystone LDAP user ID attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ID_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-name-attribute",
                "PROMPT": "Enter the Keystone LDAP user name attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_NAME_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-mail-attribute",
                "PROMPT":
                "Enter the Keystone LDAP user email address attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_MAIL_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-enabled-attribute",
                "PROMPT": "Enter the Keystone LDAP user enabled attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-enabled-mask",
                "PROMPT": "Enter the Keystone LDAP user enabled mask.",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_integer],
                "DEFAULT_VALUE": "-1",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_MASK',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-enabled-default",
                "PROMPT": "Enter the Keystone LDAP user enabled default.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "TRUE",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_DEFAULT',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-enabled-invert",
                "PROMPT":
                "Enter the Keystone LDAP user enabled invert (n or y).",
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": 'n',
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_INVERT',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-attribute-ignore",
                "PROMPT": ("Enter the comma separated Keystone LDAP user "
                           "attributes to ignore."),
                "OPTION_LIST": [],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_ATTRIBUTE_IGNORE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-default-project-id-attribute",
                "PROMPT":
                ("Enter the Keystone LDAP user default_project_id attribute."),
                "OPTION_LIST": [],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_DEFAULT_PROJECT_ID_ATTRIBUTE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-allow-create",
                "PROMPT":
                ("Do you want to allow user create through Keystone (n or y)."
                 ),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_ALLOW_CREATE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-allow-update",
                "PROMPT":
                ("Do you want to allow user update through Keystone (n or y)."
                 ),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_ALLOW_UPDATE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-allow-delete",
                "PROMPT":
                ("Do you want to allow user delete through Keystone (n or y)."
                 ),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_ALLOW_DELETE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION": "keystone-ldap-user-pass-attribute",
                "PROMPT": "Enter the Keystone LDAP user password attribute.",
                "OPTION_LIST": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_PASS_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-user-enabled-emulation-dn",
                "PROMPT": "Enter the Keystone LDAP enabled emulation DN.",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ldap_dn],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_EMULATION_DN',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                "keystone-ldap-user-additional-attribute-mapping",
                "PROMPT":
                ("Enter the comma separated Keystone LDAP user additional "
                 "attribute mappings in the form "
                 "ldap_attr:user_attr[,ldap_attr:user_attr]...."),
                "OPTION_LIST": [],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USER_ADDITIONAL_ATTRIBUTE_MAPPING',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-group-subtree",
                "PROMPT":
                "Enter the Keystone LDAP group subtree.",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_not_empty, validators.validate_ldap_dn],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_GROUP_SUBTREE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION": "keystone-ldap-group-filter",
                "PROMPT": "Enter the Keystone LDAP group query filter.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_FILTER',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-group-objectclass",
                "PROMPT": "Enter the Keystone LDAP group objectclass.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_OBJECTCLASS',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-group-id-attribute",
                "PROMPT": "Enter the Keystone LDAP group ID attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ID_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-group-name-attribute",
                "PROMPT": "Enter the Keystone LDAP group name attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_NAME_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-group-member-attribute",
                "PROMPT": "Enter the Keystone LDAP group member attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_MEMBER_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-group-desc-attribute",
                "PROMPT":
                "Enter the Keystone LDAP group description attribute.",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_DESC_ATTRIBUTE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                "keystone-ldap-group-attribute-ignore",
                "PROMPT": ("Enter the comma separated Keystone LDAP group "
                           "attributes to ignore."),
                "OPTION_LIST": [],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_GROUP_ATTRIBUTE_IGNORE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-group-allow-create",
                "PROMPT":
                ("Do you want to allow group create through Keystone (n or y)."
                 ),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_CREATE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-group-allow-update",
                "PROMPT":
                ("Do you want to allow group update through Keystone (n or y)."
                 ),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_UPDATE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-group-allow-delete",
                "PROMPT":
                ("Do you want to allow group delete through Keystone (n or y)."
                 ),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_DELETE',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-group-additional-attribute-mapping",
                "PROMPT":
                ("Enter the comma separated Keystone LDAP group additional "
                 "attribute mappings in the form "
                 "ldap_attr:group_attr[,ldap_attr:group_attr]...."),
                "OPTION_LIST": [],
                "DEFAULT_VALUE":
                "",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_GROUP_ADDITIONAL_ATTRIBUTE_MAPPING',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION":
                "keystone-ldap-use-tls",
                "PROMPT": ("Enable TLS for Keystone communicating with "
                           "LDAP servers (n or y)."),
                "OPTION_LIST": ['n', 'y'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                'n',
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_USE_TLS',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }, {
                "CMD_OPTION": "keystone-ldap-tls-cacertdir",
                "PROMPT": "CA Certificate directory for Keystone LDAP.",
                "OPTION_LIST": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_CACERTDIR',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION": "keystone-ldap-tls-cacertfile",
                "PROMPT": "CA Certificate file for Keystone LDAP.",
                "OPTION_LIST": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_CACERTFILE',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            }, {
                "CMD_OPTION":
                "keystone-ldap-tls-req-cert",
                "PROMPT": ("Keystone LDAP certificate checking strictness "
                           "(never, allow, demand)"),
                "OPTION_LIST": ["never", "allow", "demand"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE":
                "demand",
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                False,
                "CONF_NAME":
                'CONFIG_KEYSTONE_LDAP_TLS_REQ_CERT',
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            }
        ]
    }
    update_params_usage(basedefs.PACKSTACK_DOC, keystone_params)
    keystone_groups = [{
        "GROUP_NAME": "KEYSTONE",
        "DESCRIPTION": "Keystone Config parameters",
        "PRE_CONDITION": lambda x: 'yes',
        "PRE_CONDITION_MATCH": "yes",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }, {
        "GROUP_NAME": "KEYSTONE_LDAP",
        "DESCRIPTION": "Keystone LDAP Identity Backend Config parameters",
        "PRE_CONDITION": 'CONFIG_KEYSTONE_IDENTITY_BACKEND',
        "PRE_CONDITION_MATCH": "ldap",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }]
    for group in keystone_groups:
        params = keystone_params[group["GROUP_NAME"]]
        controller.addGroup(group, params)
コード例 #33
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Horizon configuration")
    paramsList = [
        {
            "CMD_OPTION": "os-horizon-host",
            "USAGE":
            "The IP address of the server on which to install Horizon",
            "PROMPT": "Enter the IP address of the Horizon server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_HORIZON_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "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],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_HORIZON_SSL",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "OSHORIZON",
        "DESCRIPTION": "OpenStack Horizon Config parameters",
        "PRE_CONDITION": "CONFIG_HORIZON_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    paramsList = [
        {
            "CMD_OPTION": "os-ssl-cert",
            "USAGE":
            "PEM encoded certificate to be used for ssl on the https server, leave blank if one should be generated, this certificate should not require a passphrase",
            "PROMPT":
            "Enter the path to a PEM encoded certificate to be used on thr https server, leave blank if one should be generated, this certificate should not require a passphrase",
            "OPTION_LIST": [],
            "VALIDATORS": [],
            "DEFAULT_VALUE": '',
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_SSL_CERT",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "os-ssl-key",
            "USAGE":
            "Keyfile corresponding to the certificate if one was entered",
            "PROMPT":
            "Enter the keyfile corresponding to the certificate if one was entered",
            "OPTION_LIST": [],
            "VALIDATORS": [],
            "DEFAULT_VALUE": "",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_SSL_KEY",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "OSSSL",
        "DESCRIPTION": "SSL Config parameters",
        "PRE_CONDITION": "CONFIG_HORIZON_SSL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #34
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Cinder configuration")
    paramsList = [
        {
            "CMD_OPTION": "cinder-host",
            "USAGE": "The IP address of the server on which to install Cinder",
            "PROMPT": "Enter the IP address of the Cinder server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_CINDER_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_CINDER_DB_PW",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": True,
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_CINDER_KS_PW",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": True,
            "CONDITION": False
        },
        {
            "CMD_OPTION":
            "cinder-backend",
            "USAGE": ("The Cinder backend to use, valid options are: "
                      "lvm, gluster, nfs"),
            "PROMPT":
            "Enter the Cinder backend to be configured",
            "OPTION_LIST": ["lvm", "gluster", "nfs"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE":
            "lvm",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            False,
            "CONF_NAME":
            "CONFIG_CINDER_BACKEND",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDER",
        "DESCRIPTION": "Cinder Config parameters",
        "PRE_CONDITION": "CONFIG_CINDER_INSTALL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    def check_lvm_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y'
                and config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'lvm')

    paramsList = [
        {
            "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"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE":
            "y",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            False,
            "CONF_NAME":
            "CONFIG_CINDER_VOLUMES_CREATE",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDERVOLUMECREATE",
        "DESCRIPTION": "Cinder volume create Config parameters",
        "PRE_CONDITION": check_lvm_options,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    def check_lvm_vg_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y'
                and config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'lvm'
                and config.get('CONFIG_CINDER_VOLUMES_CREATE', 'y') == 'y')

    paramsList = [
        {
            "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],
            "DEFAULT_VALUE":
            "20G",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            False,
            "CONF_NAME":
            "CONFIG_CINDER_VOLUMES_SIZE",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDERVOLUMESIZE",
        "DESCRIPTION": "Cinder volume size Config parameters",
        "PRE_CONDITION": check_lvm_vg_options,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    def check_gluster_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y'
                and config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'gluster')

    paramsList = [
        {
            "CMD_OPTION":
            "cinder-gluster-mounts",
            "USAGE":
            ("A single or comma separated list of gluster volume shares "
             "to mount, eg: ip-address:/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}:/.*'"],
            "VALIDATORS": [validators.validate_multi_regexp],
            "PROCESSORS": [processors.process_add_quotes_around_values],
            "DEFAULT_VALUE":
            "",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_CINDER_GLUSTER_MOUNTS",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDERGLUSTERMOUNTS",
        "DESCRIPTION": "Cinder gluster Config parameters",
        "PRE_CONDITION": check_gluster_options,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    def check_nfs_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y'
                and config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'nfs')

    paramsList = [
        {
            "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}:/.*'"],
            "VALIDATORS": [validators.validate_multi_regexp],
            "PROCESSORS": [processors.process_add_quotes_around_values],
            "DEFAULT_VALUE":
            "",
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_CINDER_NFS_MOUNTS",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
    ]

    groupDict = {
        "GROUP_NAME": "CINDERNFSMOUNTS",
        "DESCRIPTION": "Cinder NFS Config parameters",
        "PRE_CONDITION": check_nfs_options,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #35
0
ファイル: cinder_250.py プロジェクト: adamtbeames/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Cinder configuration")
    paramsList = [
                  {"CMD_OPTION"      : "cinder-host",
                   "USAGE"           : "The IP address of the server on which to install Cinder",
                   "PROMPT"          : "Enter the IP address of the Cinder server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_CINDER_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "cinder-backend",
                   "USAGE"           : ("The Cinder backend to use, valid options are: "
                                        "lvm, gluster"),
                   "PROMPT"          : "Enter the Cinder backend to be configured",
                   "OPTION_LIST"     : ["lvm", "gluster"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "lvm",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_BACKEND",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDER",
                  "DESCRIPTION"           : "Cinder Config parameters",
                  "PRE_CONDITION"         : "CONFIG_CINDER_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_lvm_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'lvm')

    paramsList = [
                  {"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"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "y",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_VOLUMES_CREATE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDERVOLUMECREATE",
                  "DESCRIPTION"           : "Cinder volume create Config parameters",
                  "PRE_CONDITION"         : check_lvm_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_lvm_vg_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'lvm' and
                config.get('CONFIG_CINDER_VOLUMES_CREATE', 'y') == 'y')

    paramsList = [
                  {"CMD_OPTION"      : "cinder-volumes-size",
                   "USAGE"           : "Cinder's volumes group size",
                   "PROMPT"          : "Enter Cinder's volumes group size",
                   "OPTION_LIST"     : [],
                   "VALIDATORS" : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "20G",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_VOLUMES_SIZE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDERVOLUMESIZE",
                  "DESCRIPTION"           : "Cinder volume size Config parameters",
                  "PRE_CONDITION"         : check_lvm_vg_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_gluster_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') == 'y' and
                config.get('CONFIG_CINDER_BACKEND', 'lvm') == 'gluster')

    paramsList = [
                  {"CMD_OPTION"      : "cinder-gluster-mounts",
                   "USAGE"           : ("A gluster volume to mount, eg: "
                                        "ip-address:/vol-name "
                                        "You don't need to create a local volume group when "
                                        "using gluster."),
                   "PROMPT"          : "Enter a gluster volume for use with Cinder",
                   "OPTION_LIST"     : ["^([\d]{1,3}\.){3}[\d]{1,3}:/.*"],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_CINDER_GLUSTER_MOUNTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ]

    groupDict = { "GROUP_NAME"            : "CINDERGLUSTERMOUNTS",
                  "DESCRIPTION"           : "Cinder gluster mounts",
                  "PRE_CONDITION"         : check_gluster_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #36
0
ファイル: ceilometer_800.py プロジェクト: AnyBucket/packstack
def initConfig(controller):
    ceilometer_params = {
        "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],
             "DEFAULT_VALUE": uuid.uuid4().hex[:16],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"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],
             "DEFAULT_VALUE": uuid.uuid4().hex[:16],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": True,
             "CONDITION": False},
        ],

        "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],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_MONGODB_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
    }

    ceilometer_groups = [
        {"GROUP_NAME": "CEILOMETER",
         "DESCRIPTION": "Ceilometer Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "MONGODB",
         "DESCRIPTION": "MONGODB Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #37
0
ファイル: dashboard_500.py プロジェクト: MariusCC/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Horizon configuration")
    paramsList = [
                  {"CMD_OPTION"      : "os-horizon-host",
                   "USAGE"           : "The IP address of the server on which to install Horizon",
                   "PROMPT"          : "Enter the IP address of the Horizon server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_HORIZON_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : "n",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_HORIZON_SSL",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "OSHORIZON",
                  "DESCRIPTION"           : "OpenStack Horizon Config parameters",
                  "PRE_CONDITION"         : "CONFIG_HORIZON_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    paramsList = [
                  {"CMD_OPTION"      : "os-ssl-cert",
                   "USAGE"           : "PEM encoded certificate to be used for ssl on the https server, leave blank if one should be generated, this certificate should not require a passphrase",
                   "PROMPT"          : "Enter the path to a PEM encoded certificate to be used on the https server, leave blank if one should be generated, this certificate should not require a passphrase",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [],
                   "DEFAULT_VALUE"   : '',
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SSL_CERT",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "os-ssl-key",
                   "USAGE"           : "Keyfile corresponding to the certificate if one was entered",
                   "PROMPT"          : "Enter the keyfile corresponding to the certificate if one was entered",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [],
                   "DEFAULT_VALUE"   : "",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SSL_KEY",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "OSSSL",
                  "DESCRIPTION"           : "SSL Config parameters",
                  "PRE_CONDITION"         : "CONFIG_HORIZON_SSL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #38
0
def initConfig(controller):
    ceilometer_params = {
        "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],
             "DEFAULT_VALUE": uuid.uuid4().hex[:16],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"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],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"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],
             "DEFAULT_VALUE": 'redis',
             "MASK_INPUT": False,
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],

        "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],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_MONGODB_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
        "REDIS": [
            {"CMD_OPTION": "redis-host",
             "USAGE": ("The IP address of the server on which to install "
                       "redis"),
             "PROMPT": "Enter the IP address of the redis server",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ssh],
             "DEFAULT_VALUE": utils.get_localhost_ip(),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_REDIS_HOST",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
            {"CMD_OPTION": "redis-port",
             "USAGE": "The port on which the redis server listens",
             "PROMPT": "Enter the port of the redis server",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_port],
             "DEFAULT_VALUE": 6379,
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME": "CONFIG_REDIS_PORT",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},
        ],
    }

    ceilometer_groups = [
        {"GROUP_NAME": "CEILOMETER",
         "DESCRIPTION": "Ceilometer Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "MONGODB",
         "DESCRIPTION": "MONGODB Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
         "PRE_CONDITION_MATCH": "y",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "REDIS",
         "DESCRIPTION": "Redis Config parameters",
         "PRE_CONDITION": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
         "PRE_CONDITION_MATCH": "redis",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #39
0
ファイル: swift_600.py プロジェクト: weshayutin/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Swift configuration")
    paramsList = [
                  {"CMD_OPTION"      : "os-swift-proxy",
                   "USAGE"           : "The IP address on which to install the Swift proxy service",
                   "PROMPT"          : "Enter the IP address of the Swift proxy service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_PROXY_HOSTS", #XXX: Shouldn't be here CONFIG_SWIFT_PROXY_HOST?
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_SWIFT_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "os-swift-storage",
                   "USAGE"           : "A comma separated list of IP addresses on which to install the Swift Storage services, each entry should take the format <ipaddress>[/dev], for example 127.0.0.1/vdb will install /dev/vdb on 127.0.0.1 as a swift storage device(packstack does not create the filesystem, you must do this first), if /dev is omitted Packstack will create a loopback device for a test setup",
                   "PROMPT"          : "Enter the Swift Storage servers e.g. host/dev,host/dev",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty, validate_storage],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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"     : [],
                   "VALIDATORS"      : [validators.validate_integer],
                   "DEFAULT_VALUE"   : "1",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_ZONES",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_integer],
                   "DEFAULT_VALUE"   : "1",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_REPLICAS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : "ext4",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_FSTYPE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "OSSWIFT",
                  "DESCRIPTION"           : "OpenStack Swift Config parameters",
                  "PRE_CONDITION"         : "CONFIG_SWIFT_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #40
0
ファイル: heat_750.py プロジェクト: halfss/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Heat configuration")
    parameters = [
        {"CMD_OPTION"      : "heat-host",
         "USAGE"           : ('The IP address of the server on which '
                              'to install Heat service'),
         "PROMPT"          : 'Enter the IP address of the Heat service',
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_HEAT_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },

        {"CMD_OPTION"      : "heat-mysql-password",
         "USAGE"	         : 'The password used by Heat user to authenticate against MySQL',
         "PROMPT"          : "Enter the password for the Heat MySQL user",
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_not_empty],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_DB_PW",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "CONDITION"       : False },

        {"CMD_OPTION"      : "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],
         "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
         "MASK_INPUT"      : True,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_KS_PW",
         "USE_DEFAULT"     : True,
         "NEED_CONFIRM"    : True,
         "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],
         "DEFAULT_VALUE"   : "n",
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_CLOUDWATCH_INSTALL",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "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],
         "DEFAULT_VALUE"   : "n",
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME"       : "CONFIG_HEAT_CFN_INSTALL",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },
        ]
    group = {"GROUP_NAME"          : "Heat",
             "DESCRIPTION"         : "Heat Config parameters",
             "PRE_CONDITION"       : "CONFIG_HEAT_INSTALL",
             "PRE_CONDITION_MATCH" : "y",
             "POST_CONDITION"      : False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, parameters)

    parameters = [
        {"CMD_OPTION"      : "heat-api-cloudwatch-host",
         "USAGE"           : ('The IP address of the server on which '
                              'to install Heat CloudWatch API service'),
         "PROMPT"          : ('Enter the IP address of the Heat CloudWatch API '
                              'server'),
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_HEAT_CLOUDWATCH_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },
    ]

    def check_cloudwatch(config):
        return config["CONFIG_HEAT_INSTALL"] == 'y' and \
            config["CONFIG_HEAT_CLOUDWATCH_INSTALL"] == 'y'

    group = {"GROUP_NAME"          : "Heat CloudWatch API",
             "DESCRIPTION"         : "Heat CloudWatch API config parameters",
             "PRE_CONDITION"       : check_cloudwatch,
             "PRE_CONDITION_MATCH" : True,
             "POST_CONDITION"      : False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, parameters)

    parameters = [
        {"CMD_OPTION"      : "heat-api-cfn-host",
         "USAGE"           : ('The IP address of the server on which '
                              'to install Heat CloudFormation API service'),
         "PROMPT"          : ('Enter the IP address of the Heat CloudFormation '
                              'API server'),
         "OPTION_LIST"     : [],
         "VALIDATORS"      : [validators.validate_ssh],
         "DEFAULT_VALUE"   : utils.get_localhost_ip(),
         "MASK_INPUT"      : False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME"       : "CONFIG_HEAT_CFN_HOST",
         "USE_DEFAULT"     : False,
         "NEED_CONFIRM"    : False,
         "CONDITION"       : False },
    ]

    def check_cloudformation(config):
        return config["CONFIG_HEAT_INSTALL"] == 'y' and \
            config["CONFIG_HEAT_CFN_INSTALL"] == 'y'

    group = {"GROUP_NAME"          : "Heat CloudFormation API",
             "DESCRIPTION"         : "Heat CloudFormation API config parameters",
             "PRE_CONDITION"       : check_cloudformation,
             "PRE_CONDITION_MATCH" : True,
             "POST_CONDITION"      : False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, parameters)
コード例 #41
0
ファイル: qpid_002.py プロジェクト: harveyzh/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack QPID configuration")
    paramsList = [
                  {"CMD_OPTION"      : "qpid-host",
                   "USAGE"           : "The IP address of the server on which to install the QPID service",
                   "PROMPT"          : "Enter the IP address of the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-enable-ssl",
                   "USAGE"           : "Enable SSL for the QPID service",
                   "PROMPT"          : "Enable SSL for the QPID service?",
                   "OPTION_LIST"     : ["y", "n"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "n",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_QPID_ENABLE_SSL",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },

                  ]


    groupDict = { "GROUP_NAME"            : "QPIDLANCE",
                  "DESCRIPTION"           : "QPID Config parameters",
                  "PRE_CONDITION"         : "CONFIG_NOVA_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    paramsList = [
                  {"CMD_OPTION"      : "qpid-nss-certdb-pw",
                   "USAGE"           : "The password for the NSS certificate database of the QPID service",
                   "PROMPT"          : "Enter the password for NSS certificate database",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:32],
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_NSS_CERTDB_PW",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-ssl-port",
                   "USAGE"           : "The port in which the QPID service listens to SSL connections",
                   "PROMPT"          : "Enter the SSL port for the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "5671",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_PORT",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-ssl-cert-file",
                   "USAGE"           : "The filename of the certificate that the QPID service is going to use",
                   "PROMPT"          : "Enter the filename of the SSL certificate for the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "/etc/pki/tls/certs/qpid_selfcert.pem",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_CERT_FILE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-ssl-key-file",
                   "USAGE"           : "The filename of the private key that the QPID service is going to use",
                   "PROMPT"          : "Enter the private key filename",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "/etc/pki/tls/private/qpid_selfkey.pem",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_KEY_FILE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-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],
                   "DEFAULT_VALUE"   : "y",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_SELF_SIGNED",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "QPIDSSL",
                  "DESCRIPTION"           : "QPID Config SSL parameters",
                  "PRE_CONDITION"         : "CONFIG_QPID_ENABLE_SSL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #42
0
ファイル: cinder_250.py プロジェクト: huit/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Cinder configuration")
    paramsList = [
                  {"CMD_OPTION"      : "cinder-host",
                   "USAGE"           : "The IP address of the server on which to install Cinder",
                   "PROMPT"          : "Enter the IP address of the Cinder server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_CINDER_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"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"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "y",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_VOLUMES_CREATE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDER",
                  "DESCRIPTION"           : "Cinder Config parameters",
                  "PRE_CONDITION"         : "CONFIG_CINDER_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    def check_options(config):
        return (config.get('CONFIG_CINDER_INSTALL', 'n') ==
                config.get('CONFIG_CINDER_VOLUMES_CREATE', 'n') == 'y')

    paramsList = [
                  {"CMD_OPTION"      : "cinder-volumes-size",
                   "USAGE"           : "Cinder's volumes group size",
                   "PROMPT"          : "Enter Cinder's volumes group size",
                   "OPTION_LIST"     : [],
                   "VALIDATORS" : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "20G",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_CINDER_VOLUMES_SIZE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "CINDERVOLUMECREATE",
                  "DESCRIPTION"           : "Cinder volume create Config parameters",
                  "PRE_CONDITION"         : check_options,
                  "PRE_CONDITION_MATCH"   : True,
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #43
0
def initConfig(controller):
    ceilometer_params = {
        "CEILOMETER": [
            {
                "CONF_NAME": "CONFIG_CEILOMETER_SECRET",
                "CMD_OPTION": "ceilometer-secret",
                "PROMPT": "Enter the Ceilometer secret key",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CONF_NAME": "CONFIG_CEILOMETER_KS_PW",
                "CMD_OPTION": "ceilometer-ks-passwd",
                "PROMPT":
                "Enter the password for the Ceilometer Keystone access",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "PW_PLACEHOLDER",
                "PROCESSORS": [processors.process_password],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "USE_DEFAULT": False,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "ceilometer-service-name",
                "PROMPT": "Enter the Ceilometer service name.",
                "OPTION_LIST": ['ceilometer', 'httpd'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "httpd",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": 'CONFIG_CEILOMETER_SERVICE_NAME',
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CONF_NAME": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
                "CMD_OPTION": "ceilometer-coordination-backend",
                "PROMPT": "Enter the coordination driver",
                "OPTION_LIST": ['redis', 'none'],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": 'redis',
                "MASK_INPUT": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CONF_NAME": "CONFIG_ENABLE_CEILOMETER_MIDDLEWARE",
                "CMD_OPTION": "enable-ceilometer-middleware",
                "PROMPT": ("Enable ceilometer middleware in swift proxy"),
                "OPTION_LIST": ["y", "n"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "n",
                "MASK_INPUT": False,
                "USE_DEFAULT": True,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "REDIS": [
            {
                "CMD_OPTION": "redis-host",
                "PROMPT": "Enter the host for the Redis server",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False,
                "DEPRECATES": ["CONFIG_REDIS_MASTER_HOST"]
            },
            {
                "CMD_OPTION": "redis-port",
                "PROMPT": "Enter the port of the redis server(s)",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_port],
                "DEFAULT_VALUE": 6379,
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_REDIS_PORT",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
    }
    update_params_usage(basedefs.PACKSTACK_DOC, ceilometer_params)

    ceilometer_groups = [
        {
            "GROUP_NAME": "CEILOMETER",
            "DESCRIPTION": "Ceilometer Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "REDIS",
            "DESCRIPTION": "Redis Config parameters",
            "PRE_CONDITION": "CONFIG_CEILOMETER_COORDINATION_BACKEND",
            "PRE_CONDITION_MATCH": "redis",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
    ]
    for group in ceilometer_groups:
        paramList = ceilometer_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #44
0
ファイル: amqp_002.py プロジェクト: jjacob512/packstack
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],
         "DEFAULT_VALUE": "rabbitmq",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_AMQP_BACKEND",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},

        {"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],
         "DEFAULT_VALUE": utils.get_localhost_ip(),
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_HOST",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": "n",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_AMQP_ENABLE_SSL",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": "n",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": False,
         "CONF_NAME": "CONFIG_AMQP_ENABLE_AUTH",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},
    ]
    group = {"GROUP_NAME": "AMQP",
             "DESCRIPTION": "AMQP Config parameters",
             "PRE_CONDITION": False,
             "PRE_CONDITION_MATCH": True,
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)

    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],
         "DEFAULT_VALUE": uuid.uuid4().hex[:32],
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_NSS_CERTDB_PW",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": "5671",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_SSL_PORT",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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": [],
         "VALIDATORS": [validators.validate_not_empty],
         "DEFAULT_VALUE": "/etc/pki/tls/certs/amqp_selfcert.pem",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_SSL_CERT_FILE",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": "/etc/pki/tls/private/amqp_selfkey.pem",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_SSL_KEY_FILE",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": "y",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_SSL_SELF_SIGNED",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},
    ]
    group = {"GROUP_NAME": "AMQPSSL",
             "DESCRIPTION": "AMQP Config SSL parameters",
             "PRE_CONDITION": "CONFIG_AMQP_ENABLE_SSL",
             "PRE_CONDITION_MATCH": "y",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)

    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],
         "DEFAULT_VALUE": "amqp_user",
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_AUTH_USER",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "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],
         "DEFAULT_VALUE": uuid.uuid4().hex[:16],
         "MASK_INPUT": False,
         "LOOSE_VALIDATION": True,
         "CONF_NAME": "CONFIG_AMQP_AUTH_PASSWORD",
         "USE_DEFAULT": False,
         "NEED_CONFIRM": False,
         "CONDITION": False},
    ]
    group = {"GROUP_NAME": "AMQPAUTH",
             "DESCRIPTION": "AMQP Config Athentication parameters",
             "PRE_CONDITION": "CONFIG_AMQP_ENABLE_AUTH",
             "PRE_CONDITION_MATCH": "y",
             "POST_CONDITION": False,
             "POST_CONDITION_MATCH": True}
    controller.addGroup(group, params)
コード例 #45
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    logging.debug("Adding OpenStack Neutron configuration")

    conf_params = {
        "NEUTRON" : [
            {"CMD_OPTION"      : "neutron-server-host",
             "USAGE"           : "The IP addresses of the server on which to install the Neutron server",
             "PROMPT"          : "Enter the IP address of the Neutron server",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_SERVER_HOST",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_KS_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_DB_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l3-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron L3 agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Neutron L3 agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_L3_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l3-ext-bridge",
             "USAGE"           : "The name of the bridge that the Neutron L3 agent will use for external traffic, or 'provider' if using provider networks",
             "PROMPT"          : "Enter the bridge the Neutron L3 agent will use for external traffic, or 'provider' if using provider networks",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : "br-ex",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_L3_EXT_BRIDGE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-dhcp-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron DHCP agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install Neutron DHCP agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_DHCP_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-lbaas-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron LBaaS agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install Neutron LBaaS agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_LBAAS_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l2-plugin",
             "USAGE"           : "The name of the L2 plugin to be used with Neutron",
             "PROMPT"          : "Enter the name of the L2 plugin to be used with Neutron",
             "OPTION_LIST"     : ["linuxbridge", "openvswitch", "ml2"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "openvswitch",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_L2_PLUGIN",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-metadata-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron metadata agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Neutron metadata agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_METADATA_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-metadata-pw",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron metadata agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Neutron metadata agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_METADATA_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            ],
        "NEUTRON_LB_PLUGIN" : [
            {"CMD_OPTION"      : "neutron-lb-tenant-network-type",
             "USAGE"           : "The type of network to allocate for tenant networks (eg. vlan, local)",
             "PROMPT"          : "Enter the type of network to allocate for tenant networks",
             "OPTION_LIST"     : ["local", "vlan"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_LB_TENANT_NETWORK_TYPE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-lb-vlan-ranges",
             "USAGE"           : "A comma separated list of VLAN ranges for the Neutron linuxbridge plugin (eg. physnet1:1:4094,physnet2,physnet3:3000:3999)",
             "PROMPT"          : "Enter a comma separated list of VLAN ranges for the Neutron linuxbridge plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_LB_VLAN_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_LB_PLUGIN_AND_AGENT" : [
            {"CMD_OPTION"      : "neutron-lb-interface-mappings",
             "USAGE"           : "A comma separated list of interface mappings for the Neutron linuxbridge plugin (eg. physnet1:br-eth1,physnet2:br-eth2,physnet3:br-eth3)",
             "PROMPT"          : "Enter a comma separated list of interface mappings for the Neutron linuxbridge plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN" : [
            {"CMD_OPTION"      : "neutron-ovs-tenant-network-type",
             "USAGE"           : "Type of network to allocate for tenant networks (eg. vlan, local, gre, vxlan)",
             "PROMPT"          : "Enter the type of network to allocate for tenant networks",
             "OPTION_LIST"     : ["local", "vlan", "gre", "vxlan"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-ovs-vlan-ranges",
             "USAGE"           : "A comma separated list of VLAN ranges for the Neutron openvswitch plugin (eg. physnet1:1:4094,physnet2,physnet3:3000:3999)",
             "PROMPT"          : "Enter a comma separated list of VLAN ranges for the Neutron openvswitch plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_VLAN_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN_AND_AGENT" : [
            {"CMD_OPTION"      : "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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_BRIDGE_IFACES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN_TUNNEL" : [
            {"CMD_OPTION"      : "neutron-ovs-tunnel-ranges",
             "USAGE"           : "A comma separated list of tunnel ranges for the Neutron openvswitch plugin (eg. 1:1000)",
             "PROMPT"          : "Enter a comma separated list of tunnel ranges for the Neutron openvswitch plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_TUNNEL_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN_AND_AGENT_TUNNEL" : [
            {"CMD_OPTION"      : "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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_TUNNEL_IF",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN_AND_AGENT_VXLAN" : [
            {"CMD_OPTION"      : "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],
             "DEFAULT_VALUE"   : 4789,
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,

             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_ML2_PLUGIN" : [
            {"CMD_OPTION"      : "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"],
             "VALIDATORS"      : [validators.validate_multi_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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"],
             "VALIDATORS"      : [validators.validate_multi_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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", "hyperv", "ncs", "arista",
                                  "cisco_nexus", "l2population"],
             "VALIDATORS"      : [validators.validate_multi_options],
             "DEFAULT_VALUE"   : "openvswitch",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "*",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-ml2-vlan-ranges",
             "CONF_NAME"       : "CONFIG_NEUTRON_ML2_VLAN_RANGES",
             "USAGE"           : ("A comma separated list of "
                                  "<physical_network>:<vlan_min>:<vlan_max> "
                                  "or <physical_network> 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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-ml2-tunnel-id-ranges",
             "CONF_NAME"       : "CONFIG_NEUTRON_ML2_TUNNEL_ID_RANGES",
             "USAGE"           : ("A comma separated list of <tun_min>:"
                                  "<tun_max> 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 <tun_min>:"
                                  "<tun_max> tuples enumerating ranges of GRE "
                                  "tunnel IDs that are available for tenant "
                                  "network allocation"),
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-ml2-vni-ranges",
             "CONF_NAME"       : "CONFIG_NEUTRON_ML2_VNI_RANGES",
             "USAGE"           : ("A comma separated list of <vni_min>:"
                                  "<vni_max> 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 <vni_min>:"
                                  "<vni_max> tuples enumerating ranges of "
                                  "VXLAN VNI IDs that are available for tenant"
                                  " network allocation"),
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l2-agent", # We need to ask for this only in case of ML2 plugins
             "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"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "openvswitch",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_L2_AGENT",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        }

    def use_ml2_plugin(config):
        return (config['CONFIG_NEUTRON_INSTALL'] == 'y' and
                config['CONFIG_NEUTRON_L2_PLUGIN'] == 'ml2')

    def use_linuxbridge_plugin(config):
        result = (config['CONFIG_NEUTRON_INSTALL'] == 'y' and
                  config['CONFIG_NEUTRON_L2_PLUGIN'] == 'linuxbridge')
        if result:
            config["CONFIG_NEUTRON_L2_AGENT"] = 'linuxbridge'
        return result

    def use_linuxbridge_agent(config):
        ml2_used = (use_ml2_plugin(config) and
                    config["CONFIG_NEUTRON_L2_AGENT"] == 'linuxbridge')
        return use_linuxbridge_plugin(config) or ml2_used

    def use_openvswitch_plugin(config):
        result = (config['CONFIG_NEUTRON_INSTALL'] == 'y' and
                  config['CONFIG_NEUTRON_L2_PLUGIN'] == 'openvswitch')
        if result:
            config["CONFIG_NEUTRON_L2_AGENT"] = 'openvswitch'
        return result

    def use_openvswitch_plugin_tunnel(config):
        tun_types = ('gre', 'vxlan')
        return (use_openvswitch_plugin(config) and
                config['CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE'] in tun_types)

    def use_ml2_with_ovs(config):
        return (use_ml2_plugin(config) and
                config["CONFIG_NEUTRON_L2_AGENT"] == 'openvswitch')

    def use_openvswitch_agent(config):
        return use_openvswitch_plugin(config) or use_ml2_with_ovs(config)

    def use_openvswitch_agent_tunnel(config):
        return use_openvswitch_plugin_tunnel(config) or use_ml2_with_ovs(config)

    def use_openvswitch_vxlan(config):
        ovs_vxlan = (
            use_openvswitch_plugin_tunnel(config) and
            config['CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE'] == 'vxlan'
        )
        ml2_vxlan = (
            use_ml2_with_ovs(config) and
            'vxlan' in config['CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES']
        )
        return ovs_vxlan or ml2_vxlan


    conf_groups = [
        { "GROUP_NAME"            : "NEUTRON",
          "DESCRIPTION"           : "Neutron config",
          "PRE_CONDITION"         : "CONFIG_NEUTRON_INSTALL",
          "PRE_CONDITION_MATCH"   : "y",
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_ML2_PLUGIN",
          "DESCRIPTION"           : "Neutron ML2 plugin config",
          "PRE_CONDITION"         : use_ml2_plugin,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_LB_PLUGIN",
          "DESCRIPTION"           : "Neutron LB plugin config",
          "PRE_CONDITION"         : use_linuxbridge_plugin,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_LB_PLUGIN_AND_AGENT",
          "DESCRIPTION"           : "Neutron LB agent config",
          "PRE_CONDITION"         : use_linuxbridge_agent,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN",
          "DESCRIPTION"           : "Neutron OVS plugin config",
          "PRE_CONDITION"         : use_openvswitch_plugin,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN_AND_AGENT",
          "DESCRIPTION"           : "Neutron OVS agent config",
          "PRE_CONDITION"         : use_openvswitch_agent,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN_TUNNEL",
          "DESCRIPTION"           : "Neutron OVS plugin config for tunnels",
          "PRE_CONDITION"         : use_openvswitch_plugin_tunnel,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN_AND_AGENT_TUNNEL",
          "DESCRIPTION"           : "Neutron OVS agent config for tunnels",
          "PRE_CONDITION"         : use_openvswitch_agent_tunnel,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN_AND_AGENT_VXLAN",
          "DESCRIPTION"           : "Neutron OVS agent config for VXLAN",
          "PRE_CONDITION"         : use_openvswitch_vxlan,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        ]

    for group in conf_groups:
        paramList = conf_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #46
0
ファイル: keystone_100.py プロジェクト: chenyili/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Keystone configuration")
    paramsList = [
                  {"CMD_OPTION"      : "keystone-host",
                   "USAGE"           : "The IP address of the server on which to install Keystone",
                   "PROMPT"          : "Enter the IP address of the Keystone server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_KEYSTONE_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_KEYSTONE_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex,
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_KEYSTONE_ADMIN_TOKEN",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_KEYSTONE_ADMIN_PW",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_KEYSTONE_DEMO_PW",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "keystone-token-format",
                   "USAGE"           : "Kestone token format. Use either UUID or PKI",
                   "PROMPT"          : "Enter the Keystone token format.",
                   "OPTION_LIST"     : ['UUID', 'PKI'],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : 'PKI',
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : 'CONFIG_KEYSTONE_TOKEN_FORMAT',
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "KEYSTONE",
                  "DESCRIPTION"           : "Keystone Config parameters",
                  "PRE_CONDITION"         : lambda x: 'yes',
                  "PRE_CONDITION_MATCH"   : "yes",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #47
0
ファイル: qpid_002.py プロジェクト: kusune/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack QPID configuration")
    paramsList = [
                  {"CMD_OPTION"      : "qpid-host",
                   "USAGE"           : "The IP address of the server on which to install the QPID service",
                   "PROMPT"          : "Enter the IP address of the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-enable-ssl",
                   "USAGE"           : "Enable SSL for the QPID service",
                   "PROMPT"          : "Enable SSL for the QPID service?",
                   "OPTION_LIST"     : ["y", "n"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "n",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_QPID_ENABLE_SSL",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },

                  ]


    groupDict = { "GROUP_NAME"            : "QPIDLANCE",
                  "DESCRIPTION"           : "QPID Config parameters",
                  "PRE_CONDITION"         : "CONFIG_NOVA_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)

    paramsList = [
                  {"CMD_OPTION"      : "qpid-nss-certdb-pw",
                   "USAGE"           : "The password for the NSS certificate database of the QPID service",
                   "PROMPT"          : "Enter the password for NSS certificate database",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:32],
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_NSS_CERTDB_PW",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-ssl-port",
                   "USAGE"           : "The port in which the QPID service listens to SSL connections",
                   "PROMPT"          : "Enter the SSL port for the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "5671",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_PORT",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-ssl-cert-file",
                   "USAGE"           : "The filename of the certificate that the QPID service is going to use",
                   "PROMPT"          : "Enter the filename of the SSL certificate for the QPID service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "/etc/pki/tls/certs/qpid_selfcert.pem",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_CERT_FILE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-ssl-key-file",
                   "USAGE"           : "The filename of the private key that the QPID service is going to use",
                   "PROMPT"          : "Enter the private key filename",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "/etc/pki/tls/private/qpid_selfkey.pem",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_KEY_FILE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "qpid-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],
                   "DEFAULT_VALUE"   : "y",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_QPID_SSL_SELF_SIGNED",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "QPIDSSL",
                  "DESCRIPTION"           : "QPID Config SSL parameters",
                  "PRE_CONDITION"         : "CONFIG_QPID_ENABLE_SSL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}

    controller.addGroup(groupDict, paramsList)
コード例 #48
0
def initConfig(controller):
    keystone_params = {
        "KEYSTONE": [  # base keystone options
            {"CMD_OPTION": "keystone-db-passwd",
             "PROMPT": "Enter the password for the Keystone DB access",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "PROCESSORS": [processors.process_password],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_DB_PW",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-region",
             "PROMPT": "Region name",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "RegionOne",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_REGION",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-admin-token",
             "PROMPT": "The token to use for the Keystone service api",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": uuid.uuid4().hex,
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_TOKEN",
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-admin-email",
             "PROMPT": "Enter the email address for the Keystone admin user",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "root@localhost",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_EMAIL",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-admin-username",
             "PROMPT": "Enter the username for the Keystone admin user",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "admin",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_USERNAME",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-admin-passwd",
             "PROMPT": "Enter the password for the Keystone admin user",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_PW",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-demo-passwd",
             "PROMPT": "Enter the password for the Keystone demo user",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_DEMO_PW",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-api-version",
             "PROMPT": "Enter the Keystone API version string.",
             "OPTION_LIST": ['v2.0', 'v3'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'v2.0',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_API_VERSION',
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-token-format",
             "PROMPT": "Enter the Keystone token format.",
             "OPTION_LIST": ['UUID', 'PKI'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'UUID',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_TOKEN_FORMAT',
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-service-name",
             "PROMPT": "Enter the Keystone service name.",
             "OPTION_LIST": ['keystone', 'httpd'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "httpd",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_SERVICE_NAME',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-identity-backend",
             "PROMPT": "Enter the Keystone identity backend type.",
             "OPTION_LIST": ['sql', 'ldap'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "sql",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_IDENTITY_BACKEND',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False}
        ],

        "KEYSTONE_LDAP": [  # keystone ldap identity backend options
            {"CMD_OPTION": "keystone-ldap-url",
             "PROMPT": "Enter the Keystone LDAP backend URL.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ldap_url],
             "DEFAULT_VALUE": host_to_ldap_url(utils.get_localhost_ip()),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_URL',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-dn",
             "PROMPT": "Enter the Keystone LDAP user DN.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_DN',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-password",
             "PROMPT": "Enter the Keystone LDAP user password.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_PASSWORD',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-suffix",
             "PROMPT": "Enter the Keystone LDAP suffix.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty,
                            validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_SUFFIX',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-query-scope",
             "PROMPT": "Enter the Keystone LDAP query scope.",
             "OPTION_LIST": ['base', 'one', 'sub'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "one",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_QUERY_SCOPE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-page-size",
             "PROMPT": "Enter the Keystone LDAP query page size.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_integer],
             "DEFAULT_VALUE": "-1",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_PAGE_SIZE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-subtree",
             "PROMPT": "Enter the Keystone LDAP user subtree.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty,
                            validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_SUBTREE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-filter",
             "PROMPT": "Enter the Keystone LDAP user query filter.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_FILTER',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-objectclass",
             "PROMPT": "Enter the Keystone LDAP user objectclass.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_OBJECTCLASS',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-id-attribute",
             "PROMPT": "Enter the Keystone LDAP user ID attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ID_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-name-attribute",
             "PROMPT": "Enter the Keystone LDAP user name attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_NAME_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-mail-attribute",
             "PROMPT": "Enter the Keystone LDAP user email address attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_MAIL_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-enabled-attribute",
             "PROMPT": "Enter the Keystone LDAP user enabled attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-enabled-mask",
             "PROMPT": "Enter the Keystone LDAP user enabled mask.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_integer],
             "DEFAULT_VALUE": "-1",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_MASK',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-enabled-default",
             "PROMPT": "Enter the Keystone LDAP user enabled default.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "TRUE",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_DEFAULT',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-enabled-invert",
             "PROMPT": "Enter the Keystone LDAP user enabled invert (n or y).",
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_INVERT',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-attribute-ignore",
             "PROMPT": (
                 "Enter the comma separated Keystone LDAP user "
                 "attributes to ignore."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ATTRIBUTE_IGNORE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-default-project-id-attribute",
             "PROMPT": (
                 "Enter the Keystone LDAP user default_project_id attribute."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME":
             'CONFIG_KEYSTONE_LDAP_USER_DEFAULT_PROJECT_ID_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-allow-create",
             "PROMPT": (
                 "Do you want to allow user create through Keystone (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ALLOW_CREATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-allow-update",
             "PROMPT": (
                 "Do you want to allow user update through Keystone (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ALLOW_UPDATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-allow-delete",
             "PROMPT": (
                 "Do you want to allow user delete through Keystone (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ALLOW_DELETE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-pass-attribute",
             "PROMPT": "Enter the Keystone LDAP user password attribute.",
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_PASS_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-enabled-emulation-dn",
             "PROMPT": "Enter the Keystone LDAP enabled emulation DN.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_EMULATION_DN',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-additional-attribute-mapping",
             "PROMPT": (
                 "Enter the comma separated Keystone LDAP user additional "
                 "attribute mappings in the form "
                 "ldap_attr:user_attr[,ldap_attr:user_attr]...."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME":
             'CONFIG_KEYSTONE_LDAP_USER_ADDITIONAL_ATTRIBUTE_MAPPING',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-subtree",
             "PROMPT": "Enter the Keystone LDAP group subtree.",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty,
                            validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_SUBTREE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-filter",
             "PROMPT": "Enter the Keystone LDAP group query filter.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_FILTER',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-objectclass",
             "PROMPT": "Enter the Keystone LDAP group objectclass.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_OBJECTCLASS',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-id-attribute",
             "PROMPT": "Enter the Keystone LDAP group ID attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ID_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-name-attribute",
             "PROMPT": "Enter the Keystone LDAP group name attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_NAME_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-member-attribute",
             "PROMPT": "Enter the Keystone LDAP group member attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_MEMBER_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-desc-attribute",
             "PROMPT": "Enter the Keystone LDAP group description attribute.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_DESC_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-attribute-ignore",
             "PROMPT": (
                 "Enter the comma separated Keystone LDAP group "
                 "attributes to ignore."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ATTRIBUTE_IGNORE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-allow-create",
             "PROMPT": (
                 "Do you want to allow group create through Keystone (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_CREATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-allow-update",
             "PROMPT": (
                 "Do you want to allow group update through Keystone (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_UPDATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-allow-delete",
             "PROMPT": (
                 "Do you want to allow group delete through Keystone (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_DELETE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-additional-attribute-mapping",
             "PROMPT": (
                 "Enter the comma separated Keystone LDAP group additional "
                 "attribute mappings in the form "
                 "ldap_attr:group_attr[,ldap_attr:group_attr]...."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME":
             'CONFIG_KEYSTONE_LDAP_GROUP_ADDITIONAL_ATTRIBUTE_MAPPING',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-use-tls",
             "PROMPT": (
                 "Enable TLS for Keystone communicating with "
                 "LDAP servers (n or y)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USE_TLS',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-tls-cacertdir",
             "PROMPT": "CA Certificate directory for Keystone LDAP.",
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_CACERTDIR',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-tls-cacertfile",
             "PROMPT": "CA Certificate file for Keystone LDAP.",
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_CACERTFILE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-tls-req-cert",
             "PROMPT": (
                 "Keystone LDAP certificate checking strictness "
                 "(never, allow, demand)"
             ),
             "OPTION_LIST": ["never", "allow", "demand"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "demand",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_REQ_CERT',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False}
        ]
    }
    update_params_usage(basedefs.PACKSTACK_DOC, keystone_params)
    keystone_groups = [
        {"GROUP_NAME": "KEYSTONE",
         "DESCRIPTION": "Keystone Config parameters",
         "PRE_CONDITION": lambda x: 'yes',
         "PRE_CONDITION_MATCH": "yes",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "KEYSTONE_LDAP",
         "DESCRIPTION": "Keystone LDAP Identity Backend Config parameters",
         "PRE_CONDITION": 'CONFIG_KEYSTONE_IDENTITY_BACKEND',
         "PRE_CONDITION_MATCH": "ldap",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True}
    ]
    for group in keystone_groups:
        params = keystone_params[group["GROUP_NAME"]]
        controller.addGroup(group, params)
コード例 #49
0
ファイル: nova_300.py プロジェクト: pombredanne/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    if platform.linux_distribution()[0] == "Fedora":
      primary_netif = "em1"
      secondary_netif = "em2"
    else:
      primary_netif = "eth0"
      secondary_netif = "eth1"

    nova_params = {
            "NOVA" : [
                  {"CMD_OPTION"      : "novaapi-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova API service",
                   "PROMPT"          : "Enter the IP address of the Nova API service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_API_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novacert-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Cert service",
                   "PROMPT"          : "Enter the IP address of the Nova Cert service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_CERT_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novavncproxy-hosts",
                   "USAGE"           : "The IP address of the server on which to install the Nova VNC proxy",
                   "PROMPT"          : "Enter the IP address of the Nova VNC proxy",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_VNCPROXY_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novacompute-hosts",
                   "USAGE"           : "A comma separated list of IP addresses on which to install the Nova Compute services",
                   "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Nova Compute services",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty, validators.validate_multi_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_COMPUTE_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novaconductor-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Conductor service",
                   "PROMPT"          : "Enter the IP address of the Nova Conductor service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_CONDUCTOR_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novasched-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Scheduler service",
                   "PROMPT"          : "Enter the IP address of the Nova Scheduler service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_float],
                   "DEFAULT_VALUE"   : 16.0,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_float],
                   "DEFAULT_VALUE"   : 1.5,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
             "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"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : secondary_netif,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_COMPUTE_PRIVIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Network service",
                   "PROMPT"          : "Enter the IP address of the Nova Network service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : "nova.network.manager.FlatDHCPManager",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_MANAGER",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : primary_netif,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_PUBIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : secondary_netif,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_PRIVIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "192.168.32.0/22",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_FIXEDRANGE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "10.3.4.0/22",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_FLOATRANGE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-default-floating-pool",
                   "USAGE"           : "Name of the default floating pool to which the specified floating ranges are added to",
                   "PROMPT"          : "What should the default floating pool be called?",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "nova",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_DEFAULTFLOATINGPOOL",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "n",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_AUTOASSIGNFLOATINGIP",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
             "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],
                   "DEFAULT_VALUE"   : 100,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_VLAN_START",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : 1,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_NUMBER",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : 255,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_SIZE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
              }

    def use_nova_network(config):
        return config['CONFIG_NOVA_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_INSTALL'] != 'y'

    def use_nova_network_vlan(config):
        manager = 'nova.network.manager.VlanManager'
        return config['CONFIG_NOVA_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_INSTALL'] != 'y' and \
               config['CONFIG_NOVA_NETWORK_MANAGER'] == manager

    nova_groups = [
         {"GROUP_NAME"            : "NOVA",
          "DESCRIPTION"           : "Nova Options",
          "PRE_CONDITION"         : "CONFIG_NOVA_INSTALL",
          "PRE_CONDITION_MATCH"   : "y",
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
         {"GROUP_NAME"            : "NOVA_NETWORK",
          "DESCRIPTION"           : "Nova Network Options",
          "PRE_CONDITION"         : use_nova_network,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
         {"GROUP_NAME"            : "NOVA_NETWORK_VLAN",
          "DESCRIPTION"           : "Nova Network VLAN Options",
          "PRE_CONDITION"         : use_nova_network_vlan,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
        ]

    for group in nova_groups:
        paramList = nova_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #50
0
ファイル: nova_300.py プロジェクト: weshayutin/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    nova_params = {
        "NOVA": [
            {
                "CMD_OPTION": "novaapi-host",
                "USAGE":
                "The IP address of the server on which to install the Nova API service",
                "PROMPT": "Enter the IP address of the Nova API service",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_ip, validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_API_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novacert-host",
                "USAGE":
                "The IP address of the server on which to install the Nova Cert service",
                "PROMPT": "Enter the IP address of the Nova Cert service",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_CERT_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novavncproxy-hosts",
                "USAGE":
                "The IP address of the server on which to install the Nova VNC proxy",
                "PROMPT": "Enter the IP address of the Nova VNC proxy",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_VNCPROXY_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION":
                "novacompute-hosts",
                "USAGE":
                "A comma separated list of IP addresses on which to install the Nova Compute services",
                "PROMPT":
                "Enter a comma separated list of IP addresses on which to install the Nova Compute services",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_not_empty, validators.validate_multi_ssh],
                "DEFAULT_VALUE":
                utils.get_localhost_ip(),
                "MASK_INPUT":
                False,
                "LOOSE_VALIDATION":
                True,
                "CONF_NAME":
                "CONFIG_NOVA_COMPUTE_HOSTS",
                "USE_DEFAULT":
                False,
                "NEED_CONFIRM":
                False,
                "CONDITION":
                False
            },
            {
                "CMD_OPTION": "novaconductor-host",
                "USAGE":
                "The IP address of the server on which to install the Nova Conductor service",
                "PROMPT": "Enter the IP address of the Nova Conductor service",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_ip, validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_CONDUCTOR_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "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],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NOVA_DB_PW",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "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],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NOVA_KS_PW",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novasched-host",
                "USAGE":
                "The IP address of the server on which to install the Nova Scheduler service",
                "PROMPT": "Enter the IP address of the Nova Scheduler service",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_SCHED_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "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": [],
                "VALIDATORS": [validators.validate_float],
                "DEFAULT_VALUE": 16.0,
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "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": [],
                "VALIDATORS": [validators.validate_float],
                "DEFAULT_VALUE": 1.5,
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "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": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "eth1",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_COMPUTE_PRIVIF",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novanetwork-host",
                "USAGE":
                "The IP address of the server on which to install the Nova Network service",
                "PROMPT": "Enter the IP address of the Nova Network service",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_ip, validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "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],
                "DEFAULT_VALUE": "eth0",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_PUBIF",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novanetwork-privif",
                "USAGE":
                "Private interface for Flat DHCP on the Nova network server",
                "PROMPT":
                "Enter the Private interface for Flat DHCP on the Nova network server",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "eth1",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_PRIVIF",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novanetwork-fixed-range",
                "USAGE": "IP Range for Flat DHCP",
                "PROMPT": "Enter the IP Range for Flat DHCP",
                "OPTION_LIST": ["^([\d]{1,3}\.){3}[\d]{1,3}/\d\d?$"],
                "VALIDATORS": [validators.validate_regexp],
                "DEFAULT_VALUE": "192.168.32.0/22",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_FIXEDRANGE",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "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": ["^([\d]{1,3}\.){3}[\d]{1,3}/\d\d?$"],
                "VALIDATORS": [validators.validate_regexp],
                "DEFAULT_VALUE": "10.3.4.0/22",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_FLOATRANGE",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "novanetwork-default-floating-pool",
                "USAGE":
                "Name of the default floating pool to which the specified floating ranges are added to",
                "PROMPT": "What should the default floating pool be called?",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "nova",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_DEFAULTFLOATINGPOOL",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "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"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "n",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NOVA_NETWORK_AUTOASSIGNFLOATINGIP",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
    }

    def use_nova_network(config):
        return config['CONFIG_NOVA_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_INSTALL'] != 'y'

    nova_groups = [
        {
            "GROUP_NAME": "NOVA",
            "DESCRIPTION": "Nova Options",
            "PRE_CONDITION": "CONFIG_NOVA_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "NOVA_NETWORK",
            "DESCRIPTION": "Nova Network Options",
            "PRE_CONDITION": use_nova_network,
            "PRE_CONDITION_MATCH": True,
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
    ]

    for group in nova_groups:
        paramList = nova_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #51
0
ファイル: mysql_003.py プロジェクト: snowflying/packstack
def initConfig(controller):
    params = [
        {
            "CMD_OPTION":
            "mysql-host",
            "USAGE":
            ("The IP address of the server on which to install MySQL or "
             "IP address of DB server to use if MySQL installation was "
             "not selected"),
            "PROMPT":
            "Enter the IP address of the MySQL server",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_ssh],
            "DEFAULT_VALUE":
            utils.get_localhost_ip(),
            "MASK_INPUT":
            False,
            "LOOSE_VALIDATION":
            True,
            "CONF_NAME":
            "CONFIG_MYSQL_HOST",
            "USE_DEFAULT":
            False,
            "NEED_CONFIRM":
            False,
            "CONDITION":
            False
        },
        {
            "CMD_OPTION": "mysql-user",
            "USAGE": "Username for the MySQL admin user",
            "PROMPT": "Enter the username for the MySQL admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "root",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_MYSQL_USER",
            "USE_DEFAULT": True,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "CMD_OPTION": "mysql-pw",
            "USAGE": "Password for the MySQL admin user",
            "PROMPT": "Enter the password for the MySQL admin user",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": True,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_MYSQL_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": True,
            "CONDITION": False
        },
    ]
    group = {
        "GROUP_NAME": "MYSQL",
        "DESCRIPTION": "MySQL Config parameters",
        "PRE_CONDITION": lambda x: 'yes',
        "PRE_CONDITION_MATCH": "yes",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }
    controller.addGroup(group, params)
コード例 #52
0
ファイル: nova_300.py プロジェクト: adamtbeames/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    nova_params = {
            "NOVA" : [
                  {"CMD_OPTION"      : "novaapi-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova API service",
                   "PROMPT"          : "Enter the IP address of the Nova API service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_API_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novacert-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Cert service",
                   "PROMPT"          : "Enter the IP address of the Nova Cert service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_CERT_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novavncproxy-hosts",
                   "USAGE"           : "The IP address of the server on which to install the Nova VNC proxy",
                   "PROMPT"          : "Enter the IP address of the Nova VNC proxy",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_VNCPROXY_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novacompute-hosts",
                   "USAGE"           : "A comma separated list of IP addresses on which to install the Nova Compute services",
                   "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Nova Compute services",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty, validators.validate_multi_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_COMPUTE_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novaconductor-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Conductor service",
                   "PROMPT"          : "Enter the IP address of the Nova Conductor service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_CONDUCTOR_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_DB_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novasched-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Scheduler service",
                   "PROMPT"          : "Enter the IP address of the Nova Scheduler service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_float],
                   "DEFAULT_VALUE"   : 16.0,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_float],
                   "DEFAULT_VALUE"   : 1.5,
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
             "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"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "eth1",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_COMPUTE_PRIVIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-host",
                   "USAGE"           : "The IP address of the server on which to install the Nova Network service",
                   "PROMPT"          : "Enter the IP address of the Nova Network service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_HOST",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : "eth0",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_PUBIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-privif",
                   "USAGE"           : "Private interface for Flat DHCP on the Nova network server",
                   "PROMPT"          : "Enter the Private interface for Flat DHCP on the Nova network server",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "eth1",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_PRIVIF",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-fixed-range",
                   "USAGE"           : "IP Range for Flat DHCP",
                   "PROMPT"          : "Enter the IP Range for Flat DHCP",
                   "OPTION_LIST"     : ["^([\d]{1,3}\.){3}[\d]{1,3}/\d\d?$"],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "192.168.32.0/22",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_FIXEDRANGE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : ["^([\d]{1,3}\.){3}[\d]{1,3}/\d\d?$"],
                   "VALIDATORS"      : [validators.validate_regexp],
                   "DEFAULT_VALUE"   : "10.3.4.0/22",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_FLOATRANGE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "novanetwork-default-floating-pool",
                   "USAGE"           : "Name of the default floating pool to which the specified floating ranges are added to",
                   "PROMPT"          : "What should the default floating pool be called?",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty],
                   "DEFAULT_VALUE"   : "nova",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_DEFAULTFLOATINGPOOL",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"],
                   "VALIDATORS"      : [validators.validate_options],
                   "DEFAULT_VALUE"   : "n",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_NOVA_NETWORK_AUTOASSIGNFLOATINGIP",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  ],
              }

    def use_nova_network(config):
        return config['CONFIG_NOVA_INSTALL'] == 'y' and \
               config['CONFIG_QUANTUM_INSTALL'] != 'y'

    nova_groups = [
        { "GROUP_NAME"            : "NOVA",
          "DESCRIPTION"           : "Nova Options",
          "PRE_CONDITION"         : "CONFIG_NOVA_INSTALL",
          "PRE_CONDITION_MATCH"   : "y",
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
        { "GROUP_NAME"            : "NOVA_NETWORK",
          "DESCRIPTION"           : "Nova Network Options",
          "PRE_CONDITION"         : use_nova_network,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True},
        ]

    for group in nova_groups:
        paramList = nova_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #53
0
ファイル: neutron_350.py プロジェクト: halfss/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    logging.debug("Adding OpenStack Neutron configuration")

    conf_params = {
        "NEUTRON" : [
            {"CMD_OPTION"      : "neutron-server-host",
             "USAGE"           : "The IP addresses of the server on which to install the Neutron server",
             "PROMPT"          : "Enter the IP address of the Neutron server",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_ip, validators.validate_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_SERVER_HOST",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_KS_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_DB_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l3-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron L3 agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Neutron L3 agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_L3_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l3-ext-bridge",
             "USAGE"           : "The name of the bridge that the Neutron L3 agent will use for external traffic, or 'provider' if using provider networks",
             "PROMPT"          : "Enter the bridge the Neutron L3 agent will use for external traffic, or 'provider' if using provider networks",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : "br-ex",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_L3_EXT_BRIDGE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-dhcp-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron DHCP agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install Neutron DHCP agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_DHCP_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-lbaas-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron LBaaS agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install Neutron LBaaS agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_LBAAS_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-l2-plugin",
             "USAGE"           : "The name of the L2 plugin to be used with Neutron",
             "PROMPT"          : "Enter the name of the L2 plugin to be used with Neutron",
             "OPTION_LIST"     : ["linuxbridge", "openvswitch"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "openvswitch",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_L2_PLUGIN",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-metadata-hosts",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron metadata agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Neutron metadata agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_multi_ssh],
             "DEFAULT_VALUE"   : utils.get_localhost_ip(),
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_METADATA_HOSTS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-metadata-pw",
             "USAGE"           : "A comma separated list of IP addresses on which to install Neutron metadata agent",
             "PROMPT"          : "Enter a comma separated list of IP addresses on which to install the Neutron metadata agent",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [validators.validate_not_empty],
             "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
             "MASK_INPUT"      : True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_METADATA_PW",
             "USE_DEFAULT"     : True,
             "NEED_CONFIRM"    : True,
             "CONDITION"       : False },
            ],
        "NEUTRON_LB_PLUGIN" : [
            {"CMD_OPTION"      : "neutron-lb-tenant-network-type",
             "USAGE"           : "The type of network to allocate for tenant networks (eg. vlan, local, gre)",
             "PROMPT"          : "Enter the type of network to allocate for tenant networks",
             "OPTION_LIST"     : ["local", "vlan"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_LB_TENANT_NETWORK_TYPE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-lb-vlan-ranges",
             "USAGE"           : "A comma separated list of VLAN ranges for the Neutron linuxbridge plugin (eg. physnet1:1:4094,physnet2,physnet3:3000:3999)",
             "PROMPT"          : "Enter a comma separated list of VLAN ranges for the Neutron linuxbridge plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_LB_VLAN_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-lb-interface-mappings",
             "USAGE"           : "A comma separated list of interface mappings for the Neutron linuxbridge plugin (eg. physnet1:br-eth1,physnet2:br-eth2,physnet3:br-eth3)",
             "PROMPT"          : "Enter a comma separated list of interface mappings for the Neutron linuxbridge plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN" : [
            {"CMD_OPTION"      : "neutron-ovs-tenant-network-type",
             "USAGE"           : "Type of network to allocate for tenant networks (eg. vlan, local, gre)",
             "PROMPT"          : "Enter the type of network to allocate for tenant networks",
             "OPTION_LIST"     : ["local", "vlan", "gre"],
             "VALIDATORS"      : [validators.validate_options],
             "DEFAULT_VALUE"   : "local",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-ovs-vlan-ranges",
             "USAGE"           : "A comma separated list of VLAN ranges for the Neutron openvswitch plugin (eg. physnet1:1:4094,physnet2,physnet3:3000:3999)",
             "PROMPT"          : "Enter a comma separated list of VLAN ranges for the Neutron openvswitch plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_VLAN_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "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"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_BRIDGE_IFACES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        "NEUTRON_OVS_PLUGIN_GRE" : [
            {"CMD_OPTION"      : "neutron-ovs-tunnel-ranges",
             "USAGE"           : "A comma separated list of tunnel ranges for the Neutron openvswitch plugin (eg. 1:1000)",
             "PROMPT"          : "Enter a comma separated list of tunnel ranges for the Neutron openvswitch plugin",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_TUNNEL_RANGES",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            {"CMD_OPTION"      : "neutron-ovs-tunnel-if",
             "USAGE"           : "The interface for the OVS tunnel. Packstack will override the IP address used for GRE tunnels on this hypervisor to the IP found on the specified interface. (eg. eth1) ",
             "PROMPT"          : "Enter interface with IP to override the default the GRE local_ip",
             "OPTION_LIST"     : [],
             "VALIDATORS"      : [],
             "DEFAULT_VALUE"   : "",
             "MASK_INPUT"      : False,
             "LOOSE_VALIDATION": True,
             "CONF_NAME"       : "CONFIG_NEUTRON_OVS_TUNNEL_IF",
             "USE_DEFAULT"     : False,
             "NEED_CONFIRM"    : False,
             "CONDITION"       : False },
            ],
        }

    def use_linuxbridge(config):
        return config['CONFIG_NEUTRON_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_L2_PLUGIN'] == 'linuxbridge'

    def use_openvswitch(config):
        return config['CONFIG_NEUTRON_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_L2_PLUGIN'] == 'openvswitch'

    def use_openvswitch_gre(config):
        return use_openvswitch(config) and \
               config['CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE'] == 'gre'

    conf_groups = [
        { "GROUP_NAME"            : "NEUTRON",
          "DESCRIPTION"           : "Neutron config",
          "PRE_CONDITION"         : "CONFIG_NEUTRON_INSTALL",
          "PRE_CONDITION_MATCH"   : "y",
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_LB_PLUGIN",
          "DESCRIPTION"           : "Neutron LB plugin config",
          "PRE_CONDITION"         : use_linuxbridge,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN",
          "DESCRIPTION"           : "Neutron OVS plugin config",
          "PRE_CONDITION"         : use_openvswitch,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        { "GROUP_NAME"            : "NEUTRON_OVS_PLUGIN_GRE",
          "DESCRIPTION"           : "Neutron OVS plugin config for GRE tunnels",
          "PRE_CONDITION"         : use_openvswitch_gre,
          "PRE_CONDITION_MATCH"   : True,
          "POST_CONDITION"        : False,
          "POST_CONDITION_MATCH"  : True },
        ]

    for group in conf_groups:
        paramList = conf_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)
コード例 #54
0
ファイル: amqp_002.py プロジェクト: chenyili/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack AMQP configuration")
    paramsList = [
        {
            "CMD_OPTION": "amqp-server",
            "USAGE": "Set the server for the AMQP service",
            "PROMPT": "Set the server for the AMQP service (qpid, rabbitmq)? ",
            "OPTION_LIST": ["qpid", "rabbitmq"],
            "VALIDATORS": [validators.validate_options],
            "DEFAULT_VALUE": "rabbitmq",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_SERVER",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
        {
            "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],
            "DEFAULT_VALUE": utils.get_localhost_ip(),
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_HOST",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_ENABLE_SSL",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": "n",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": False,
            "CONF_NAME": "CONFIG_AMQP_ENABLE_AUTH",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "AMQPLANCE",
        "DESCRIPTION": "AMQP Config parameters",
        "PRE_CONDITION": False,
        "PRE_CONDITION_MATCH": True,
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    paramsList = [
        {
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:32],
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_NSS_CERTDB_PW",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": "5671",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_SSL_PORT",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "/etc/pki/tls/certs/amqp_selfcert.pem",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_SSL_CERT_FILE",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": "/etc/pki/tls/private/amqp_selfkey.pem",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_SSL_KEY_FILE",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": "y",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_SSL_SELF_SIGNED",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "AMQPSSL",
        "DESCRIPTION": "AMQP Config SSL parameters",
        "PRE_CONDITION": "CONFIG_AMQP_ENABLE_SSL",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)

    paramsList = [
        {
            "CMD_OPTION": "amqp-auth-user",
            "USAGE": "User for amqp authentication",
            "PROMPT": "Enter the user for amqp authentication",
            "OPTION_LIST": [],
            "VALIDATORS": [validators.validate_not_empty],
            "DEFAULT_VALUE": "amqp_user",
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_AUTH_USER",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "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],
            "DEFAULT_VALUE": uuid.uuid4().hex[:16],
            "MASK_INPUT": False,
            "LOOSE_VALIDATION": True,
            "CONF_NAME": "CONFIG_AMQP_AUTH_PASSWORD",
            "USE_DEFAULT": False,
            "NEED_CONFIRM": False,
            "CONDITION": False
        },
    ]

    groupDict = {
        "GROUP_NAME": "AMQPAUTH",
        "DESCRIPTION": "AMQP Config Athentication parameters",
        "PRE_CONDITION": "CONFIG_AMQP_ENABLE_AUTH",
        "PRE_CONDITION_MATCH": "y",
        "POST_CONDITION": False,
        "POST_CONDITION_MATCH": True
    }

    controller.addGroup(groupDict, paramsList)
コード例 #55
0
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],
             "PROCESSORS": [processors.process_password],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_DB_PW",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-region",
             "USAGE": "Region name",
             "PROMPT": "Region name",
             "OPTION_LIST": [],
             "VALIDATORS": [validators.validate_not_empty],
             "DEFAULT_VALUE": "RegionOne",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_REGION",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": uuid.uuid4().hex,
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_TOKEN",
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_ADMIN_PW",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "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],
             "DEFAULT_VALUE": "PW_PLACEHOLDER",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": "CONFIG_KEYSTONE_DEMO_PW",
             "USE_DEFAULT": False,
             "NEED_CONFIRM": True,
             "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],
             "DEFAULT_VALUE": 'v2.0',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_API_VERSION',
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": 'UUID',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_TOKEN_FORMAT',
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "httpd",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_SERVICE_NAME',
             "USE_DEFAULT": True,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "sql",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_IDENTITY_BACKEND',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False}
        ],

        "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],
             "DEFAULT_VALUE": host_to_ldap_url(utils.get_localhost_ip()),
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_URL',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_DN',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "PROCESSORS": [processors.process_password],
             "MASK_INPUT": True,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_PASSWORD',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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,
                            validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_SUFFIX',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "one",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_QUERY_SCOPE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "-1",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_PAGE_SIZE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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,
                            validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_SUBTREE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_FILTER',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-user-objectclass",
             "USAGE": "Keystone LDAP backend user objectclass",
             "PROMPT": "Enter the Keystone LDAP user objectclass.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_OBJECTCLASS',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ID_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_NAME_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_MAIL_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "-1",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_MASK',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "TRUE",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_DEFAULT',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_INVERT',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ATTRIBUTE_IGNORE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME":
             'CONFIG_KEYSTONE_LDAP_USER_DEFAULT_PROJECT_ID_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ALLOW_CREATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ALLOW_UPDATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ALLOW_DELETE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_PASS_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USER_ENABLED_EMULATION_DN',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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 <ldap_attr>:<user_attr>, 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 "
                 "ldap_attr:user_attr[,ldap_attr:user_attr]...."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME":
             'CONFIG_KEYSTONE_LDAP_USER_ADDITIONAL_ATTRIBUTE_MAPPING',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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,
                            validators.validate_ldap_dn],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_SUBTREE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_FILTER',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False},

            {"CMD_OPTION": "keystone-ldap-group-objectclass",
             "USAGE": "Keystone LDAP backend group objectclass",
             "PROMPT": "Enter the Keystone LDAP group objectclass.",
             "OPTION_LIST": [],
             "VALIDATORS": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_OBJECTCLASS',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ID_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_NAME_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_MEMBER_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_DESC_ATTRIBUTE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ATTRIBUTE_IGNORE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_CREATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_UPDATE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_GROUP_ALLOW_DELETE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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 <ldap_attr>:<group_attr>, 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 "
                 "ldap_attr:group_attr[,ldap_attr:group_attr]...."
             ),
             "OPTION_LIST": [],
             "DEFAULT_VALUE": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME":
             'CONFIG_KEYSTONE_LDAP_GROUP_ADDITIONAL_ATTRIBUTE_MAPPING',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)."
             ),
             "OPTION_LIST": ['n', 'y'],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": 'n',
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_USE_TLS',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_CACERTDIR',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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": "",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_CACERTFILE',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "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)"
             ),
             "OPTION_LIST": ["never", "allow", "demand"],
             "VALIDATORS": [validators.validate_options],
             "DEFAULT_VALUE": "demand",
             "MASK_INPUT": False,
             "LOOSE_VALIDATION": False,
             "CONF_NAME": 'CONFIG_KEYSTONE_LDAP_TLS_REQ_CERT',
             "USE_DEFAULT": False,
             "NEED_CONFIRM": False,
             "CONDITION": False}
        ]
    }

    keystone_groups = [
        {"GROUP_NAME": "KEYSTONE",
         "DESCRIPTION": "Keystone Config parameters",
         "PRE_CONDITION": lambda x: 'yes',
         "PRE_CONDITION_MATCH": "yes",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True},

        {"GROUP_NAME": "KEYSTONE_LDAP",
         "DESCRIPTION": "Keystone LDAP Identity Backend Config parameters",
         "PRE_CONDITION": 'CONFIG_KEYSTONE_IDENTITY_BACKEND',
         "PRE_CONDITION_MATCH": "ldap",
         "POST_CONDITION": False,
         "POST_CONDITION_MATCH": True}
    ]
    for group in keystone_groups:
        params = keystone_params[group["GROUP_NAME"]]
        controller.addGroup(group, params)
コード例 #56
0
ファイル: swift_600.py プロジェクト: harveyzh/packstack
def initConfig(controllerObject):
    global controller
    controller = controllerObject
    logging.debug("Adding OpenStack Swift configuration")
    paramsList = [
                  {"CMD_OPTION"      : "os-swift-proxy",
                   "USAGE"           : "The IP address on which to install the Swift proxy service (currently only single proxy is supported)",
                   "PROMPT"          : "Enter the IP address of the Swift proxy service",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_multi_ip, validators.validate_multi_ssh],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_PROXY_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_SWIFT_KS_PW",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                  {"CMD_OPTION"      : "os-swift-storage",
                   "USAGE"           : "A comma separated list of IP addresses on which to install the Swift Storage services, each entry should take the format <ipaddress>[/dev], for example 127.0.0.1/vdb will install /dev/vdb on 127.0.0.1 as a swift storage device(packstack does not create the filesystem, you must do this first), if /dev is omitted Packstack will create a loopback device for a test setup",
                   "PROMPT"          : "Enter the Swift Storage servers e.g. host/dev,host/dev",
                   "OPTION_LIST"     : [],
                   "VALIDATORS"      : [validators.validate_not_empty, validate_storage],
                   "DEFAULT_VALUE"   : utils.get_localhost_ip(),
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_HOSTS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "CONDITION"       : False },
                  {"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"     : [],
                   "VALIDATORS"      : [validators.validate_integer],
                   "DEFAULT_VALUE"   : "1",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_ZONES",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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"     : [],
                   "VALIDATORS"      : [validators.validate_integer],
                   "DEFAULT_VALUE"   : "1",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_REPLICAS",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : "ext4",
                   "MASK_INPUT"      : False,
                   "LOOSE_VALIDATION": True,
                   "CONF_NAME"       : "CONFIG_SWIFT_STORAGE_FSTYPE",
                   "USE_DEFAULT"     : False,
                   "NEED_CONFIRM"    : False,
                   "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],
                   "DEFAULT_VALUE"   : uuid.uuid4().hex[:16],
                   "MASK_INPUT"      : True,
                   "LOOSE_VALIDATION": False,
                   "CONF_NAME"       : "CONFIG_SWIFT_HASH",
                   "USE_DEFAULT"     : True,
                   "NEED_CONFIRM"    : True,
                   "CONDITION"       : False },
                 ]

    groupDict = { "GROUP_NAME"            : "OSSWIFT",
                  "DESCRIPTION"           : "OpenStack Swift Config parameters",
                  "PRE_CONDITION"         : "CONFIG_SWIFT_INSTALL",
                  "PRE_CONDITION_MATCH"   : "y",
                  "POST_CONDITION"        : False,
                  "POST_CONDITION_MATCH"  : True}


    controller.addGroup(groupDict, paramsList)
コード例 #57
0
def initConfig(controllerObject):
    global controller
    controller = controllerObject

    logging.debug("Adding OpenStack Neutron configuration")

    conf_params = {
        "NEUTRON": [
            {
                "CMD_OPTION": "neutron-server-host",
                "USAGE":
                "The IP addresses of the server on which to install the Neutron server",
                "PROMPT": "Enter the IP address of the Neutron server",
                "OPTION_LIST": [],
                "VALIDATORS":
                [validators.validate_ip, validators.validate_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_SERVER_HOST",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "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],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NEUTRON_KS_PW",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "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],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NEUTRON_DB_PW",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-l3-hosts",
                "USAGE":
                "A comma separated list of IP addresses on which to install Neutron L3 agent",
                "PROMPT":
                "Enter a comma separated list of IP addresses on which to install the Neutron L3 agent",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_multi_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_L3_HOSTS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-l3-ext-bridge",
                "USAGE":
                "The name of the bridge that the Neutron L3 agent will use for external traffic, or 'provider' if using provider networks",
                "PROMPT":
                "Enter the bridge the Neutron L3 agent will use for external traffic, or 'provider' if using provider networks",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": "br-ex",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_L3_EXT_BRIDGE",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-dhcp-hosts",
                "USAGE":
                "A comma separated list of IP addresses on which to install Neutron DHCP agent",
                "PROMPT":
                "Enter a comma separated list of IP addresses on which to install Neutron DHCP agent",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_multi_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_DHCP_HOSTS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-l2-plugin",
                "USAGE": "The name of the L2 plugin to be used with Neutron",
                "PROMPT":
                "Enter the name of the L2 plugin to be used with Neutron",
                "OPTION_LIST": ["linuxbridge", "openvswitch"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "openvswitch",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NEUTRON_L2_PLUGIN",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-metadata-hosts",
                "USAGE":
                "A comma separated list of IP addresses on which to install Neutron metadata agent",
                "PROMPT":
                "Enter a comma separated list of IP addresses on which to install the Neutron metadata agent",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_multi_ssh],
                "DEFAULT_VALUE": utils.get_localhost_ip(),
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_METADATA_HOSTS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-metadata-pw",
                "USAGE":
                "A comma separated list of IP addresses on which to install Neutron metadata agent",
                "PROMPT":
                "Enter a comma separated list of IP addresses on which to install the Neutron metadata agent",
                "OPTION_LIST": [],
                "VALIDATORS": [validators.validate_not_empty],
                "DEFAULT_VALUE": uuid.uuid4().hex[:16],
                "MASK_INPUT": True,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NEUTRON_METADATA_PW",
                "USE_DEFAULT": True,
                "NEED_CONFIRM": True,
                "CONDITION": False
            },
        ],
        "NEUTRON_LB_PLUGIN": [
            {
                "CMD_OPTION": "neutron-lb-tenant-network-type",
                "USAGE": "The type of network to allocate for tenant networks",
                "PROMPT":
                "Enter the type of network to allocate for tenant networks",
                "OPTION_LIST": ["local", "vlan"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "local",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NEUTRON_LB_TENANT_NETWORK_TYPE",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-lb-vlan-ranges",
                "USAGE":
                "A comma separated list of VLAN ranges for the Neutron linuxbridge plugin",
                "PROMPT":
                "Enter a comma separated list of VLAN ranges for the Neutron linuxbridge plugin",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_LB_VLAN_RANGES",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-lb-interface-mappings",
                "USAGE":
                "A comma separated list of interface mappings for the Neutron linuxbridge plugin",
                "PROMPT":
                "Enter a comma separated list of interface mappings for the Neutron linuxbridge plugin",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "NEUTRON_OVS_PLUGIN": [
            {
                "CMD_OPTION": "neutron-ovs-tenant-network-type",
                "USAGE": "Type of network to allocate for tenant networks",
                "PROMPT":
                "Enter the type of network to allocate for tenant networks",
                "OPTION_LIST": ["local", "vlan", "gre"],
                "VALIDATORS": [validators.validate_options],
                "DEFAULT_VALUE": "local",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": False,
                "CONF_NAME": "CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "NEUTRON_OVS_PLUGIN_VLAN": [
            {
                "CMD_OPTION": "neutron-ovs-vlan-ranges",
                "USAGE":
                "A comma separated list of VLAN ranges for the Neutron openvswitch plugin",
                "PROMPT":
                "Enter a comma separated list of VLAN ranges for the Neutron openvswitch plugin",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_OVS_VLAN_RANGES",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-ovs-bridge-mappings",
                "USAGE":
                "A comma separated list of bridge mappings for the Neutron openvswitch plugin",
                "PROMPT":
                "Enter a comma separated list of bridge mappings for the Neutron openvswitch plugin",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "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": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_OVS_BRIDGE_IFACES",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
        "NEUTRON_OVS_PLUGIN_GRE": [
            {
                "CMD_OPTION": "neutron-ovs-tunnel-ranges",
                "USAGE":
                "A comma separated list of tunnel ranges for the Neutron openvswitch plugin",
                "PROMPT":
                "Enter a comma separated list of tunnel ranges for the Neutron openvswitch plugin",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_OVS_TUNNEL_RANGES",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
            {
                "CMD_OPTION": "neutron-ovs-tunnel-if",
                "USAGE":
                "Override the IP used for GRE tunnels on this hypervisor to the IP found on the specified interface (defaults to the HOST IP)",
                "PROMPT":
                "Enter interface with IP to override the default the GRE local_ip (defaults to HOST IP)",
                "OPTION_LIST": [],
                "VALIDATORS": [],
                "DEFAULT_VALUE": "",
                "MASK_INPUT": False,
                "LOOSE_VALIDATION": True,
                "CONF_NAME": "CONFIG_NEUTRON_OVS_TUNNEL_IF",
                "USE_DEFAULT": False,
                "NEED_CONFIRM": False,
                "CONDITION": False
            },
        ],
    }

    def use_linuxbridge(config):
        return config['CONFIG_NEUTRON_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_L2_PLUGIN'] == 'linuxbridge'

    def use_openvswitch(config):
        return config['CONFIG_NEUTRON_INSTALL'] == 'y' and \
               config['CONFIG_NEUTRON_L2_PLUGIN'] == 'openvswitch'

    def use_openvswitch_vlans(config):
        return use_openvswitch(config) and \
               config['CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE'] == 'vlan'

    def use_openvswitch_gre(config):
        return use_openvswitch(config) and \
               config['CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE'] == 'gre'

    conf_groups = [
        {
            "GROUP_NAME": "NEUTRON",
            "DESCRIPTION": "Neutron config",
            "PRE_CONDITION": "CONFIG_NEUTRON_INSTALL",
            "PRE_CONDITION_MATCH": "y",
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "NEUTRON_LB_PLUGIN",
            "DESCRIPTION": "Neutron LB plugin config",
            "PRE_CONDITION": use_linuxbridge,
            "PRE_CONDITION_MATCH": True,
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "NEUTRON_OVS_PLUGIN",
            "DESCRIPTION": "Neutron OVS plugin config",
            "PRE_CONDITION": use_openvswitch,
            "PRE_CONDITION_MATCH": True,
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "NEUTRON_OVS_PLUGIN_VLAN",
            "DESCRIPTION": "Neutron OVS plugin config for VLANs",
            "PRE_CONDITION": use_openvswitch_vlans,
            "PRE_CONDITION_MATCH": True,
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
        {
            "GROUP_NAME": "NEUTRON_OVS_PLUGIN_GRE",
            "DESCRIPTION": "Neutron OVS plugin config for GRE tunnels",
            "PRE_CONDITION": use_openvswitch_gre,
            "PRE_CONDITION_MATCH": True,
            "POST_CONDITION": False,
            "POST_CONDITION_MATCH": True
        },
    ]

    for group in conf_groups:
        paramList = conf_params[group["GROUP_NAME"]]
        controller.addGroup(group, paramList)