diff options
author | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-06-21 19:46:16 -0700 |
---|---|---|
committer | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-06-21 19:46:16 -0700 |
commit | c49507a221464ce0f9747d4371f8e3d1d1b30abd (patch) | |
tree | 1bb749e85c7c83837c4ebdd425ed24cb7edc125b /cloudinit | |
parent | 340c8f337751152cc54bdbeb9f9428c35fa720a1 (diff) | |
download | vyos-cloud-init-c49507a221464ce0f9747d4371f8e3d1d1b30abd.tar.gz vyos-cloud-init-c49507a221464ce0f9747d4371f8e3d1d1b30abd.zip |
Updated so that the locale that is being written out currently in 'cc_locale'
now will be done by the distro classes (since its not the same for rhel and ubuntu).
Remove the template also since it will just be created by the ubuntu distro class (its just one line).
Diffstat (limited to 'cloudinit')
-rw-r--r-- | cloudinit/config/cc_locale.py | 25 | ||||
-rw-r--r-- | cloudinit/distros/__init__.py | 4 | ||||
-rw-r--r-- | cloudinit/distros/rhel.py | 31 | ||||
-rw-r--r-- | cloudinit/distros/ubuntu.py | 11 |
4 files changed, 48 insertions, 23 deletions
diff --git a/cloudinit/config/cc_locale.py b/cloudinit/config/cc_locale.py index 3fb4c5d9..6feaae9d 100644 --- a/cloudinit/config/cc_locale.py +++ b/cloudinit/config/cc_locale.py @@ -18,41 +18,20 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import os - -from cloudinit import templater from cloudinit import util -def apply_locale(locale, cfgfile, cloud, log): - # TODO this command might not work on RH... - if os.path.exists('/usr/sbin/locale-gen'): - util.subp(['locale-gen', locale], capture=False) - if os.path.exists('/usr/sbin/update-locale'): - util.subp(['update-locale', locale], capture=False) - if not cfgfile: - return - template_fn = cloud.get_template_filename('default-locale') - if not template_fn: - log.warn("No template filename found to write to %s", cfgfile) - else: - templater.render_to_file(template_fn, cfgfile, {'locale': locale}) - - def handle(name, cfg, cloud, log, args): if len(args) != 0: locale = args[0] 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: log.debug(("Skipping module named %s, " "no 'locale' configuration found"), name) return log.debug("Setting locale to %s", locale) - - apply_locale(locale, locale_cfgfile, cloud, log) + locale_cfgfile = util.get_cfg_option_str(cfg, "locale_configfile") + cloud.distro.apply_locale(locale, locale_cfgfile) 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) |