bootstrap-vz/providers/virtualbox/__init__.py

108 lines
3.6 KiB
Python
Raw Normal View History

2013-07-10 10:49:45 +02:00
from manifest import Manifest
from tasks import packages
from common.tasks import packages as common_packages
2013-08-11 18:00:19 +02:00
from common.tasks import host
from common.tasks import volume as volume_tasks
from common.tasks import loopback
from common.tasks import partitioning
from common.tasks import filesystem
from common.tasks import bootstrap
from common.tasks import locale
from common.tasks import apt
2013-07-10 10:49:45 +02:00
from tasks import boot
from common.tasks import boot as common_boot
from common.tasks import security
from common.tasks import network
from common.tasks import initd
from common.tasks import cleanup
2013-07-10 10:49:45 +02:00
2013-07-10 10:49:45 +02:00
def initialize():
2013-08-10 16:56:14 +02:00
pass
2013-07-10 10:49:45 +02:00
def tasks(tasklist, manifest):
tasklist.add(packages.HostPackages(),
common_packages.HostPackages(),
2013-07-10 10:49:45 +02:00
packages.ImagePackages(),
common_packages.ImagePackages(),
2013-08-10 17:52:24 +02:00
host.CheckPackages(),
loopback.Create(),
volume_tasks.Attach(),
partitioning.PartitionVolume(),
partitioning.MapPartitions(),
filesystem.Format(),
filesystem.CreateMountDir(),
filesystem.MountRoot(),
2013-08-10 17:52:24 +02:00
bootstrap.Bootstrap(),
filesystem.MountSpecials(),
2013-07-10 10:49:45 +02:00
locale.GenerateLocale(),
locale.SetTimezone(),
apt.DisableDaemonAutostart(),
apt.AptSources(),
2013-08-10 23:43:52 +02:00
apt.AptUpgrade(),
2013-07-10 10:49:45 +02:00
boot.ConfigureGrub(),
filesystem.FStab(),
common_boot.BlackListModules(),
common_boot.DisableGetTTYs(),
2013-07-10 10:49:45 +02:00
security.EnableShadowConfig(),
security.DisableSSHPasswordAuthentication(),
2013-07-10 10:49:45 +02:00
security.DisableSSHDNSLookup(),
network.RemoveDNSInfo(),
network.ConfigureNetworkIF(),
network.ConfigureDHCP(),
initd.ResolveInitScripts(),
initd.InstallInitScripts(),
cleanup.ClearMOTD(),
cleanup.ShredHostkeys(),
cleanup.CleanTMP(),
apt.PurgeUnusedPackages(),
apt.AptClean(),
apt.EnableDaemonAutostart(),
filesystem.UnmountSpecials(),
2013-08-10 17:52:24 +02:00
filesystem.UnmountRoot(),
partitioning.UnmapPartitions(),
volume_tasks.Detach(),
filesystem.DeleteMountDir(),
volume_tasks.Delete())
2013-08-10 17:52:24 +02:00
if manifest.bootstrapper['tarball']:
tasklist.add(bootstrap.MakeTarball())
partitions = manifest.volume['partitions']
import re
for key in ['boot', 'root']:
if key not in partitions:
continue
if re.match('^ext[2-4]$', partitions[key]['filesystem']) is not None:
tasklist.add(filesystem.TuneVolumeFS())
break
for key in ['boot', 'root']:
if key not in partitions:
continue
if partitions[key]['filesystem'] == 'xfs':
tasklist.add(filesystem.AddXFSProgs())
break
if 'boot' in manifest.volume['partitions']:
tasklist.add(filesystem.MountBoot(), filesystem.UnmountBoot())
2013-07-10 10:49:45 +02:00
def rollback_tasks(tasklist, tasks_completed, manifest):
completed = [type(task) for task in tasks_completed]
def counter_task(task, counter):
if task in completed and counter not in completed:
tasklist.add(counter())
counter_task(loopback.Create, volume_tasks.Delete)
counter_task(filesystem.CreateMountDir, filesystem.DeleteMountDir)
counter_task(partitioning.MapPartitions, partitioning.UnmapPartitions)
counter_task(filesystem.MountRoot, filesystem.UnmountRoot)
counter_task(filesystem.MountSpecials, filesystem.UnmountSpecials)
counter_task(filesystem.MountBoot, filesystem.UnmountBoot)
counter_task(volume_tasks.Attach, volume_tasks.Detach)