mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 15:36:27 +00:00

Lines removed: over 500. Readiblity gained: A shitload Now you can actually get an overview of a manifest on a single screen height. I am sure that it will also save a lot of hassle when modifying schema in the future. No more "expected property name" etc. because of an extraneous comma Comments are of course natively support, so there's no need for this minify_json hokey pokey
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
from tasks import Snapshot
|
|
from tasks import CopyImage
|
|
from tasks import CreateFromSnapshot
|
|
from tasks import CreateFromImage
|
|
from bootstrapvz.providers.ec2.tasks import ebs
|
|
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 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
|
|
|
|
|
|
def validate_manifest(data, validator, error):
|
|
import os.path
|
|
schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml'))
|
|
validator(data, schema_path)
|
|
|
|
|
|
def resolve_tasks(taskset, manifest):
|
|
settings = manifest.plugins['prebootstrapped']
|
|
skip_tasks = [ebs.Create,
|
|
loopback.Create,
|
|
|
|
filesystem.Format,
|
|
partitioning.PartitionVolume,
|
|
filesystem.TuneVolumeFS,
|
|
filesystem.AddXFSProgs,
|
|
filesystem.CreateBootMountDir,
|
|
|
|
apt.DisableDaemonAutostart,
|
|
locale.GenerateLocale,
|
|
bootstrap.MakeTarball,
|
|
bootstrap.Bootstrap,
|
|
guest_additions.InstallGuestAdditions,
|
|
]
|
|
if manifest.volume['backing'] == 'ebs':
|
|
if 'snapshot' in settings and settings['snapshot'] is not None:
|
|
taskset.add(CreateFromSnapshot)
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
else:
|
|
taskset.add(Snapshot)
|
|
else:
|
|
if 'image' in settings and settings['image'] is not None:
|
|
taskset.add(CreateFromImage)
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
else:
|
|
taskset.add(CopyImage)
|
|
|
|
|
|
def resolve_rollback_tasks(taskset, manifest, completed, counter_task):
|
|
if manifest.volume['backing'] == 'ebs':
|
|
counter_task(taskset, CreateFromSnapshot, volume.Delete)
|
|
else:
|
|
counter_task(taskset, CreateFromImage, volume.Delete)
|