mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 15:36:27 +00:00
Implemented GenerateLocales and SetTimezone
This commit is contained in:
parent
d3ab01f88f
commit
0ed091ca1c
3 changed files with 53 additions and 0 deletions
|
@ -19,3 +19,16 @@ def log_command(command, logger):
|
||||||
if process.poll() is not None:
|
if process.poll() is not None:
|
||||||
break
|
break
|
||||||
return process.returncode
|
return process.returncode
|
||||||
|
|
||||||
|
|
||||||
|
def sed_i(file_path, pattern, subst):
|
||||||
|
from tempfile import mkstemp
|
||||||
|
from shutil import move
|
||||||
|
from os import close
|
||||||
|
temp_fd, temp_path = mkstemp()
|
||||||
|
with open(temp_path, 'w') as new_file:
|
||||||
|
with open(file_path) as old_file:
|
||||||
|
for line in old_file:
|
||||||
|
new_file.write(line.replace(pattern, subst))
|
||||||
|
close(temp_fd)
|
||||||
|
move(temp_path, file_path)
|
||||||
|
|
|
@ -6,6 +6,7 @@ from tasks import host
|
||||||
from tasks import ebs
|
from tasks import ebs
|
||||||
from tasks import filesystem
|
from tasks import filesystem
|
||||||
from tasks import bootstrap
|
from tasks import bootstrap
|
||||||
|
from tasks import config
|
||||||
|
|
||||||
|
|
||||||
def initialize():
|
def initialize():
|
||||||
|
@ -29,6 +30,8 @@ def tasks(tasklist, manifest):
|
||||||
tasklist.add(bootstrap.MakeTarball())
|
tasklist.add(bootstrap.MakeTarball())
|
||||||
tasklist.add(bootstrap.Bootstrap())
|
tasklist.add(bootstrap.Bootstrap())
|
||||||
tasklist.add(filesystem.MountSpecials())
|
tasklist.add(filesystem.MountSpecials())
|
||||||
|
tasklist.add(config.GenerateLocale())
|
||||||
|
tasklist.add(config.SetTimezone())
|
||||||
|
|
||||||
from common.tasks import TriggerRollback
|
from common.tasks import TriggerRollback
|
||||||
tasklist.add(TriggerRollback())
|
tasklist.add(TriggerRollback())
|
||||||
|
|
37
providers/ec2/tasks/config.py
Normal file
37
providers/ec2/tasks/config.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
from base import Task
|
||||||
|
from common import phases
|
||||||
|
from common.exceptions import TaskError
|
||||||
|
from common.tools import log_command
|
||||||
|
import os.path
|
||||||
|
import logging
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class GenerateLocale(Task):
|
||||||
|
description = 'Generating the selected locale'
|
||||||
|
phase = phases.system_modification
|
||||||
|
|
||||||
|
def run(self, info):
|
||||||
|
from common.tools import sed_i
|
||||||
|
locale_gen = os.path.join(info.root, 'etc/locale.gen')
|
||||||
|
locale_str = '{locale}.{charmap} {charmap}'.format(locale=info.manifest.system['locale'],
|
||||||
|
charmap=info.manifest.system['charmap'])
|
||||||
|
search = '# ' + locale_str
|
||||||
|
sed_i(locale_gen, search, locale_str)
|
||||||
|
if log_command(['chroot', info.root, 'dpkg-reconfigure', '--priority=critical', 'locales'], log) != 0:
|
||||||
|
raise TaskError('Failed to regenerate locales')
|
||||||
|
|
||||||
|
|
||||||
|
class SetTimezone(Task):
|
||||||
|
description = 'Setting the selected timezone'
|
||||||
|
phase = phases.system_modification
|
||||||
|
|
||||||
|
def run(self, info):
|
||||||
|
from shutil import copy
|
||||||
|
tz_path = os.path.join(info.root, 'etc/timezone')
|
||||||
|
timezone = info.manifest.system['timezone']
|
||||||
|
with open(tz_path, 'w') as tz_file:
|
||||||
|
tz_file.write(timezone)
|
||||||
|
zoneinfo_path = os.path.join(info.root, '/usr/share/zoneinfo', timezone)
|
||||||
|
localtime_path = os.path.join(info.root, 'etc/localtime')
|
||||||
|
copy(zoneinfo_path, localtime_path)
|
Loading…
Add table
Reference in a new issue