2018-02-12 04:17:53 +00:00
|
|
|
from . import tasks
|
2014-03-23 23:12:07 +01:00
|
|
|
from bootstrapvz.providers.ec2.tasks import ebs
|
2016-06-05 13:35:01 +02:00
|
|
|
from bootstrapvz.plugins.minimize_size.tasks import dpkg
|
2014-03-23 23:12:07 +01:00
|
|
|
from bootstrapvz.providers.virtualbox.tasks import guest_additions
|
|
|
|
from bootstrapvz.common.tasks import loopback
|
|
|
|
from bootstrapvz.common.tasks import volume
|
2016-06-05 13:25:46 +02:00
|
|
|
from bootstrapvz.common.tasks import folder
|
2014-03-23 23:12:07 +01:00
|
|
|
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
|
2013-06-30 23:26:45 +02:00
|
|
|
|
|
|
|
|
2014-01-05 14:03:04 +01:00
|
|
|
def validate_manifest(data, validator, error):
|
2016-09-12 18:47:20 +02:00
|
|
|
from bootstrapvz.common.tools import rel_path
|
|
|
|
validator(data, rel_path(__file__, 'manifest-schema.yml'))
|
2013-12-01 23:56:17 +01:00
|
|
|
|
|
|
|
|
2014-01-05 15:13:09 +01:00
|
|
|
def resolve_tasks(taskset, manifest):
|
2016-06-04 11:35:59 +02:00
|
|
|
settings = manifest.plugins['prebootstrapped']
|
|
|
|
skip_tasks = [ebs.Create,
|
|
|
|
loopback.Create,
|
2016-06-05 13:25:46 +02:00
|
|
|
folder.Create,
|
2016-06-04 11:35:59 +02:00
|
|
|
|
|
|
|
filesystem.Format,
|
|
|
|
partitioning.PartitionVolume,
|
|
|
|
filesystem.TuneVolumeFS,
|
|
|
|
filesystem.AddXFSProgs,
|
|
|
|
filesystem.CreateBootMountDir,
|
|
|
|
|
|
|
|
apt.DisableDaemonAutostart,
|
2016-06-05 13:35:01 +02:00
|
|
|
dpkg.InitializeBootstrapFilterList,
|
|
|
|
dpkg.CreateDpkgCfg,
|
|
|
|
dpkg.CreateBootstrapFilterScripts,
|
|
|
|
dpkg.FilterLocales,
|
|
|
|
dpkg.ExcludeDocs,
|
|
|
|
dpkg.DeleteBootstrapFilterScripts,
|
2016-06-04 11:35:59 +02:00
|
|
|
locale.GenerateLocale,
|
|
|
|
bootstrap.MakeTarball,
|
|
|
|
bootstrap.Bootstrap,
|
|
|
|
guest_additions.InstallGuestAdditions,
|
|
|
|
]
|
|
|
|
if manifest.volume['backing'] == 'ebs':
|
|
|
|
if settings.get('snapshot', None) is not None:
|
2016-06-05 13:25:46 +02:00
|
|
|
taskset.add(tasks.CreateFromSnapshot)
|
2016-06-04 11:35:59 +02:00
|
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
|
|
else:
|
2016-06-05 13:25:46 +02:00
|
|
|
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)
|
2016-06-04 11:35:59 +02:00
|
|
|
else:
|
|
|
|
if settings.get('image', None) is not None:
|
2016-06-05 13:25:46 +02:00
|
|
|
taskset.add(tasks.CreateFromImage)
|
2016-06-04 11:35:59 +02:00
|
|
|
[taskset.discard(task) for task in skip_tasks]
|
|
|
|
else:
|
2016-06-05 13:25:46 +02:00
|
|
|
taskset.add(tasks.CopyImage)
|
2013-07-01 00:17:48 +02:00
|
|
|
|
|
|
|
|
2014-05-03 13:28:24 +02:00
|
|
|
def resolve_rollback_tasks(taskset, manifest, completed, counter_task):
|
2016-06-04 11:35:59 +02:00
|
|
|
if manifest.volume['backing'] == 'ebs':
|
2016-06-05 13:25:46 +02:00
|
|
|
counter_task(taskset, tasks.CreateFromSnapshot, volume.Delete)
|
|
|
|
elif manifest.volume['backing'] == 'folder':
|
|
|
|
counter_task(taskset, tasks.CreateFromFolder, folder.Delete)
|
2016-06-04 11:35:59 +02:00
|
|
|
else:
|
2016-06-05 13:25:46 +02:00
|
|
|
counter_task(taskset, tasks.CreateFromImage, volume.Delete)
|