mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-22 18:00:35 +00:00
71 lines
2.8 KiB
Python
71 lines
2.8 KiB
Python
from . import tasks
|
|
from bootstrapvz.providers.ec2.tasks import ebs
|
|
from bootstrapvz.plugins.minimize_size.tasks import dpkg
|
|
from bootstrapvz.providers.virtualbox.tasks import guest_additions
|
|
from bootstrapvz.common.tasks import loopback
|
|
from bootstrapvz.common.tasks import volume
|
|
from bootstrapvz.common.tasks import folder
|
|
from bootstrapvz.common.tasks import locale
|
|
from bootstrapvz.common.tasks import apt
|
|
from bootstrapvz.common.tasks import bootstrap
|
|
from bootstrapvz.common.tasks import filesystem
|
|
from bootstrapvz.common.tasks import partitioning
|
|
import bootstrapvz.common.tasks.dpkg
|
|
|
|
|
|
def validate_manifest(data, validator, error):
|
|
from bootstrapvz.common.tools import rel_path
|
|
validator(data, rel_path(__file__, 'manifest-schema.yml'))
|
|
|
|
|
|
def resolve_tasks(taskset, manifest):
|
|
settings = manifest.plugins['prebootstrapped']
|
|
skip_tasks = [ebs.Create,
|
|
loopback.Create,
|
|
folder.Create,
|
|
|
|
filesystem.Format,
|
|
partitioning.PartitionVolume,
|
|
filesystem.TuneVolumeFS,
|
|
filesystem.AddXFSProgs,
|
|
filesystem.CreateBootMountDir,
|
|
|
|
apt.DisableDaemonAutostart,
|
|
dpkg.InitializeBootstrapFilterList,
|
|
bootstrapvz.common.tasks.dpkg.CreateDpkgCfg,
|
|
dpkg.CreateBootstrapFilterScripts,
|
|
dpkg.FilterLocales,
|
|
dpkg.ExcludeDocs,
|
|
dpkg.DeleteBootstrapFilterScripts,
|
|
locale.GenerateLocale,
|
|
bootstrap.MakeTarball,
|
|
bootstrap.Bootstrap,
|
|
guest_additions.InstallGuestAdditions,
|
|
]
|
|
if manifest.volume['backing'] == 'ebs':
|
|
if settings.get('snapshot', None) is not None:
|
|
taskset.add(tasks.CreateFromSnapshot)
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
else:
|
|
taskset.add(tasks.Snapshot)
|
|
elif manifest.volume['backing'] == 'folder':
|
|
if settings.get('folder', None) is not None:
|
|
taskset.add(tasks.CreateFromFolder)
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
else:
|
|
taskset.add(tasks.CopyFolder)
|
|
else:
|
|
if settings.get('image', None) is not None:
|
|
taskset.add(tasks.CreateFromImage)
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
else:
|
|
taskset.add(tasks.CopyImage)
|
|
|
|
|
|
def resolve_rollback_tasks(taskset, manifest, completed, counter_task):
|
|
if manifest.volume['backing'] == 'ebs':
|
|
counter_task(taskset, tasks.CreateFromSnapshot, volume.Delete)
|
|
elif manifest.volume['backing'] == 'folder':
|
|
counter_task(taskset, tasks.CreateFromFolder, folder.Delete)
|
|
else:
|
|
counter_task(taskset, tasks.CreateFromImage, volume.Delete)
|