Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 49 additions & 16 deletions cloudinit/config/cc_locale.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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)
Expand Down
1 change: 1 addition & 0 deletions tests/unittests/test_handler/test_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def test_get_schema_coalesces_known_schema(self):
self.assertCountEqual(
[
'cc_bootcmd',
'cc_locale',
'cc_ntp',
'cc_resizefs',
'cc_runcmd',
Expand Down