From f616a9acc581d6ac2fb4ebcaa49570cc0be744ce Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Sun, 30 Oct 2011 17:23:39 -0400 Subject: Make locale file location configurable fedora's analog to /etc/default/locale is /etc/sysconfig/i18n . This makes locale_configfile configurable and chooses between /usr/sbin/locale-gen (ubuntu/debian) and /usr/sbin/update-localeo (fedora) based on availability to generate locales. taken from git://pkgs.fedoraproject.org/cloud-init.git commit 87f33190f43d2b26cced4597e7298835024466c2 Author: Garrett Holmstrom Patch4: cloud-init-0.6.2-localefile.patch --- cloudinit/CloudConfig/cc_locale.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'cloudinit/CloudConfig/cc_locale.py') diff --git a/cloudinit/CloudConfig/cc_locale.py b/cloudinit/CloudConfig/cc_locale.py index b9a221ca..8542f641 100644 --- a/cloudinit/CloudConfig/cc_locale.py +++ b/cloudinit/CloudConfig/cc_locale.py @@ -16,15 +16,17 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . import cloudinit.util as util +import os.path import subprocess import traceback -def apply_locale(locale): - subprocess.Popen(['locale-gen', locale]).communicate() - subprocess.Popen(['update-locale', locale]).communicate() +def apply_locale(locale, cfgfile): + if os.path.exists('/usr/sbin/locale-gen'): + subprocess.Popen(['locale-gen', locale]).communicate() + if os.path.exists('/usr/sbin/update-locale'): + subprocess.Popen(['update-locale', locale]).communicate() - util.render_to_file('default-locale', '/etc/default/locale', \ - { 'locale' : locale }) + util.render_to_file('default-locale', cfgfile, { 'locale' : locale }) def handle(name,cfg,cloud,log,args): if len(args) != 0: @@ -32,12 +34,15 @@ def handle(name,cfg,cloud,log,args): else: locale = util.get_cfg_option_str(cfg,"locale",cloud.get_locale()) + locale_cfgfile = util.get_cfg_option_str(cfg, "locale_configfile", + "/etc/default/locale") + if not locale: return log.debug("setting locale to %s" % locale) try: - apply_locale(locale) + apply_locale(locale, locale_cfgfile) except Exception as e: log.debug(traceback.format_exc(e)) raise Exception("failed to apply locale %s" % locale) -- cgit v1.2.3