Each release has a list of OpenStack settings that can be customized.
The settings configuration is stored in the attributes_metadata.editable
release section in the openstack.yaml file.
Settings are divided into groups. Each group should have a metadata
section
with the following attributes:
metadata:
toggleable: true
enabled: false
weight: 40
group: "security"
toggleable
defines an ability to enable/disable the whole setting group
on UI (checkbox control is presented near a setting group label).enabled
indicates whether the group is checked on the UI.weight
defines the order in which this group is displayed on the tab.restrictions
: see restrictions.group
identifies which subtab on the UI this group of settings will be
displayed on.Other sections of a setting group represent separate settings. A setting structure includes the following attributes:
syslog_transport:
value: "tcp"
label: "Syslog transport protocol"
description: ""
weight: 30
type: "radio"
values:
- data: "udp"
label: "UDP"
description: ""
restrictions:
- "cluster:net_provider != 'neutron'"
- data: "tcp"
label: "TCP"
description: ""
regex:
source: "^[A-z0-9]+$"
error: "Invalid data"
min: 1
max: 3
group: "logging"
label
is a setting title that is displayed on UI.weight
defines the order in which this setting is displayed in its group.
This attribute is desirable.type
defines the type of UI control to use for the setting.
The following types are supported:text
- single line inputnumber
- number inputpassword
- password inputtextarea
- multiline inputcheckbox
- multiple-options selectorradio
- single-option selectorselect
- drop-down listhidden
- invisible inputfile
- file contents inputtext_list
- multiple sigle-line text inputstextarea_list
- multiple multi-line text inputsregex
section is applicable for settings of “text” type. regex.source
is used when validating with a regular expression. regex.error
contains
a warning displayed near invalid field.restrictions
: see restrictions.description
section should also contain information about setting
restrictions (dependencies, conflicts).values
list is needed for settings of “radio” or “select” type to declare
its possible values. Options from values
list also support dependencies
and conflcits declaration.min
is used for setting the “number”, “text_list” or “textarea_list” type.
For the “number” type, “min” declares the minimum input number value.
For the “text_list” and “textarea_list” types, it declares the minimum list length for the
setting.max
is used for setting the “number”, “text_list”, or “textarea_list” type.
For the “number” type, “max” declares the maximum input number value.
For the “text_list” and “textarea_list” types, it declares the maximum list length for the
setting.group
specifies which subtab on the UI settings/networks page this setting will be
displayed on. Inherited from the metadata
section if not provided.
The following values are supported by UI:general
- main cluster settingssecurity
- security settingscompute
- common compute settingsnetwork
- network settings (are collected on the separate Networks tab)storage
- storage settingslogging
- logging settingsopenstack_services
- OpenStack services settings (Additional Components
subtab)other
- other settings (everything out of the above list)Restrictions define when settings and setting groups should be available.
Each restriction is defined as a condition
with optional action
, message
,
and strict
:
restrictions:
- condition: "settings:common.libvirt_type.value != 'kvm'"
message: "KVM only is supported"
- condition: "not ('experimental' in version:feature_groups)"
action: hide
condition
is an expression written in Expression DSL. If returned value
is true, then action
is performed and message
is shown (if specified).
action
defines what to do if condition
is satisfied. Supported values
are disable
, hide
and none
.``none`` can be used just to display
message
. This field is optional (default value is disable
).
message
is a message that is shown if condition
is satisfied. This field
is optional.
strict
is a boolean flag which specifies how to handle non-existent keys
in expressions. If it is set to true
(default value), exception is thrown in
case of non-existent key. Otherwise, values of such keys have a null
value.
Setting this flag to false
is useful for conditions which rely on settings
provided by plugins:
restrictions:
- condition: "settings:other_plugin == null or settings:other_plugin.metadata.enabled != true"
strict: false
message: "Other plugin must be installed and enabled"
There are also short forms of restrictions:
restrictions:
- "settings:common.libvirt_type.value != 'kvm'": "KVM only is supported"
- "settings:storage.volumes_ceph.value == true"
Expression DSL can describe arbitrarily complex conditions that compare fields of models and scalar values.
Supported types are:
Number (123, 5.67)
String (“qwe”, ‘zxc’)
Boolean (true, false)
Null value (null)
ModelPath (settings:common.libvirt_type.value, cluster:net_provider)
ModelPaths consist of a model name and a field name separated by ”:”. Nested fields (like in settings) are supported, separated by ”.”. Models available for usage are “cluster”, “settings”, “networking_parameters” and “version”.
Supported operators are:
==
. Returns true if operands are equal:
settings:common.libvirt_type.value == 'qemu'
!=
. Returns true if operands are not equal:
cluster:net_provider != 'neutron'
in
. Returns true if the right operand (Array or String) contains the left
operand:
'ceph-osd' in release:roles
Boolean operators: and
, or
, not
:
cluster:mode == "ha_compact" and not (settings:common.libvirt_type.value == 'kvm' or 'experimental' in version:feature_groups)
Parentheses can be used to override the order of precedence.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.