summaryrefslogtreecommitdiff
path: root/cloudinit/config/cc_locale.py
diff options
context:
space:
mode:
authorDaniel Watkins <oddbloke@ubuntu.com>2020-04-30 17:04:48 -0400
committerGitHub <noreply@github.com>2020-04-30 17:04:48 -0400
commit7dceb9882590fb738ac0ff3429908cc6c945485a (patch)
tree529abd677591dcde86798c92ff665d844513a061 /cloudinit/config/cc_locale.py
parent0a4971b2b2d073bc96786baf8a050b0c411e1c39 (diff)
downloadvyos-cloud-init-7dceb9882590fb738ac0ff3429908cc6c945485a.tar.gz
vyos-cloud-init-7dceb9882590fb738ac0ff3429908cc6c945485a.zip
cc_locale: introduce schema (#335)
Diffstat (limited to 'cloudinit/config/cc_locale.py')
-rw-r--r--cloudinit/config/cc_locale.py65
1 files changed, 49 insertions, 16 deletions
diff --git a/cloudinit/config/cc_locale.py b/cloudinit/config/cc_locale.py
index f68c3cc7..4f8b7bf6 100644
--- a/cloudinit/config/cc_locale.py
+++ b/cloudinit/config/cc_locale.py
@@ -6,27 +6,58 @@
#
# This file is part of cloud-init. See LICENSE file for license information.
-"""
-Locale
-------
-**Summary:** set system locale
+"""Locale: set system locale"""
-Configure the system locale and apply it system wide. By default use the locale
-specified by the datasource.
+from textwrap import dedent
-**Internal name:** ``cc_locale``
-
-**Module frequency:** per instance
+from cloudinit import util
+from cloudinit.config.schema import get_schema_doc, validate_cloudconfig_schema
+from cloudinit.settings import PER_INSTANCE
-**Supported distros:** all
-**Config keys**::
+frequency = PER_INSTANCE
+distros = ['all']
+schema = {
+ 'id': 'cc_locale',
+ 'name': 'Locale',
+ 'title': 'Set system locale',
+ 'description': dedent(
+ """\
+ Configure the system locale and apply it system wide. By default use
+ the locale specified by the datasource."""
+ ),
+ 'distros': distros,
+ 'examples': [
+ dedent("""\
+ # Set the locale to ar_AE
+ locale: ar_AE
+ """),
+ dedent("""\
+ # Set the locale to fr_CA in /etc/alternate_path/locale
+ locale: fr_CA
+ locale_configfile: /etc/alternate_path/locale
+ """),
+ ],
+ 'frequency': frequency,
+ 'type': 'object',
+ 'properties': {
+ 'locale': {
+ 'type': 'string',
+ 'description': (
+ "The locale to set as the system's locale (e.g. ar_PS)"
+ ),
+ },
+ 'locale_configfile': {
+ 'type': 'string',
+ 'description': (
+ "The file in which to write the locale configuration (defaults"
+ " to the distro's default location)"
+ ),
+ },
+ },
+}
- locale: <locale str>
- locale_configfile: <path to locale config file>
-"""
-
-from cloudinit import util
+__doc__ = get_schema_doc(schema) # Supplement python help()
def handle(name, cfg, cloud, log, args):
@@ -40,6 +71,8 @@ def handle(name, cfg, cloud, log, args):
name, locale)
return
+ validate_cloudconfig_schema(cfg, schema)
+
log.debug("Setting locale to %s", locale)
locale_cfgfile = util.get_cfg_option_str(cfg, "locale_configfile")
cloud.distro.apply_locale(locale, locale_cfgfile)