bootstrap-vz/providers/virtualbox/__init__.py

111 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
from common.tasks import workspace
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(workspace.CreateWorkspace,
packages.HostPackages,
common_packages.HostPackages,
packages.ImagePackages,
common_packages.ImagePackages,
host.CheckPackages,
2013-08-10 17:52:24 +02:00
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,
locale.GenerateLocale,
locale.SetTimezone,
apt.DisableDaemonAutostart,
apt.AptSources,
apt.AptUpgrade,
boot.ConfigureGrub,
filesystem.FStab,
common_boot.BlackListModules,
common_boot.DisableGetTTYs,
security.EnableShadowConfig,
network.RemoveDNSInfo,
network.ConfigureNetworkIF,
network.RemoveHostname,
initd.ResolveInitScripts,
initd.InstallInitScripts,
cleanup.ClearMOTD,
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,
loopback.MoveImage,
workspace.DeleteWorkspace)
2013-08-10 17:52:24 +02:00
if manifest.bootstrapper.get('tarball', False):
tasklist.add(bootstrap.MakeTarball)
2013-08-10 17:52:24 +02:00
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.CreateBootMountDir,
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)
2013-07-10 10:49:45 +02:00
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.MountBoot, filesystem.UnmountBoot)
counter_task(filesystem.MountSpecials, filesystem.UnmountSpecials)
counter_task(volume_tasks.Attach, volume_tasks.Detach)
counter_task(workspace.CreateWorkspace, workspace.DeleteWorkspace)