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).
This commit is contained in:
parent
052605c0f1
commit
5f586faf98
|
@ -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)
|
||||
|
|
|
@ -82,6 +82,10 @@ class Distro(object):
|
|||
return self._interface_action('up')
|
||||
return False
|
||||
|
||||
@abc.abstractmethod
|
||||
def apply_locale(self, locale, out_fn=None):
|
||||
raise NotImplementedError()
|
||||
|
||||
@abc.abstractmethod
|
||||
def set_timezone(self, tz):
|
||||
raise NotImplementedError()
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
LANG="{{locale}}"
|
Loading…
Reference in New Issue