import tasks
from bootstrapvz.common import task_groups
from bootstrapvz.common.tasks import image, ssh, volume
from bootstrapvz.common.tools import rel_path


def validate_manifest(data, validator, error):
    validator(data, rel_path(__file__, 'manifest-schema.yml'))


def resolve_tasks(taskset, manifest):
    taskset.update(task_groups.ssh_group)

    taskset.discard(image.MoveImage)
    taskset.discard(ssh.DisableSSHPasswordAuthentication)

    taskset.update([tasks.CheckBoxPath,
                    tasks.CreateVagrantBoxDir,
                    tasks.AddPackages,
                    tasks.CreateVagrantUser,
                    tasks.PasswordlessSudo,
                    tasks.SetRootPassword,
                    tasks.AddInsecurePublicKey,
                    tasks.PackageBox,
                    tasks.RemoveVagrantBoxDir,
                    volume.Delete,
                    ])


def resolve_rollback_tasks(taskset, manifest, completed, counter_task):
    counter_task(taskset, tasks.CreateVagrantBoxDir, tasks.RemoveVagrantBoxDir)

import tasks
from bootstrapvz.common import task_groups
from bootstrapvz.common.tasks import image, ssh, volume
from bootstrapvz.common.tools import rel_path


def validate_manifest(data, validator, error):
    validator(data, rel_path(__file__, 'manifest-schema.yml'))


def resolve_tasks(taskset, manifest):
    taskset.update(task_groups.ssh_group)

    taskset.discard(image.MoveImage)
    taskset.discard(ssh.DisableSSHPasswordAuthentication)

    taskset.update([tasks.CheckBoxPath,
                    tasks.CreateVagrantBoxDir,
                    tasks.AddPackages,
                    tasks.CreateVagrantUser,
                    tasks.PasswordlessSudo,
                    tasks.SetRootPassword,
                    tasks.AddInsecurePublicKey,
                    tasks.PackageBox,
                    tasks.RemoveVagrantBoxDir,
                    volume.Delete,
                    ])


def resolve_rollback_tasks(taskset, manifest, completed, counter_task):
    counter_task(taskset, tasks.CreateVagrantBoxDir, tasks.RemoveVagrantBoxDir)
