diff options
Diffstat (limited to 'cloudinit/distros')
-rw-r--r-- | cloudinit/distros/__init__.py | 4 | ||||
-rw-r--r-- | cloudinit/distros/rhel.py | 31 | ||||
-rw-r--r-- | cloudinit/distros/ubuntu.py | 11 |
3 files changed, 46 insertions, 0 deletions
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index f9a97da7..c324ddf6 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -83,6 +83,10 @@ class Distro(object): return False @abc.abstractmethod + def apply_locale(self, locale, out_fn=None): + raise NotImplementedError() + + @abc.abstractmethod def set_timezone(self, tz): raise NotImplementedError() diff --git a/cloudinit/distros/rhel.py b/cloudinit/distros/rhel.py index 5cbefa6e..df63d559 100644 --- a/cloudinit/distros/rhel.py +++ b/cloudinit/distros/rhel.py @@ -30,6 +30,10 @@ LOG = logging.getLogger(__name__) NETWORK_FN_TPL = '/etc/sysconfig/network-scripts/ifcfg-%s' +# See: http://tiny.cc/6r99fw +# For what alot of these files that are being written +# are and the format of them + class Distro(distros.Distro): @@ -83,6 +87,33 @@ class Distro(distros.Distro): LOG.debug("Setting hostname to %s", hostname) util.subp(['hostname', hostname]) + def apply_locale(self, locale, out_fn=None): + if not out_fn: + out_fn = self._paths.join(False, '/etc/sysconfig/i18n') + ro_fn = self._paths.join(True, '/etc/sysconfig/i18n') + # Update the 'LANG' if it exists instead of appending + old_contents = self._read_conf(ro_fn) + adjusted = False + new_contents = [] + for entry in old_contents: + if not entry: + continue + if len(entry) == 1: + new_contents.append(entry[0]) + continue + (cmd, args) = entry + cmd_c = cmd.strip().lower() + if cmd_c == 'lang': + args = "%s" % (locale) + adjusted = True + new_contents.append("=".join([cmd, args])) + # Guess not found, append it + if not adjusted: + new_contents.append("# Added by cloud-init") + new_contents.append('LANG="%s"' % (locale)) + contents = "\n".join(new_contents) + util.write_file(out_fn, contents, 0644) + def _write_hostname(self, hostname, out_fn): old_contents = [] if os.path.isfile(out_fn): diff --git a/cloudinit/distros/ubuntu.py b/cloudinit/distros/ubuntu.py index 15af2e7f..e8b95374 100644 --- a/cloudinit/distros/ubuntu.py +++ b/cloudinit/distros/ubuntu.py @@ -41,6 +41,17 @@ class Distro(distros.Distro): # should only happen say once per instance...) self._runner = helpers.Runners(paths) + def apply_locale(self, locale, out_fn=None): + if not out_fn: + out_fn = self._paths.join(False, '/etc/default/locale') + util.subp(['locale-gen', locale], capture=False) + util.subp(['update-locale', locale], capture=False) + contents = [ + "# Created by cloud-init", + 'LANG="%s"' % (locale), + ] + util.write_file(out_fn, "\n".join(contents)) + def install_packages(self, pkglist): self._update_package_sources() self.package_command('install', pkglist) |