From ad79b63c1938dfe6f9b9b577bf17581863ea7deb Mon Sep 17 00:00:00 2001 From: Nicolas Braud-Santoni Date: Mon, 22 Feb 2016 15:19:27 +0100 Subject: [PATCH] Add 'debconf' plugin Closes #282 --- bootstrapvz/plugins/debconf/__init__.py | 13 +++++++++++++ bootstrapvz/plugins/debconf/schema.yaml | 14 ++++++++++++++ bootstrapvz/plugins/debconf/tasks.py | 15 +++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 bootstrapvz/plugins/debconf/__init__.py create mode 100644 bootstrapvz/plugins/debconf/schema.yaml create mode 100644 bootstrapvz/plugins/debconf/tasks.py diff --git a/bootstrapvz/plugins/debconf/__init__.py b/bootstrapvz/plugins/debconf/__init__.py new file mode 100644 index 0000000..8e2b644 --- /dev/null +++ b/bootstrapvz/plugins/debconf/__init__.py @@ -0,0 +1,13 @@ +def validate_manifest(data, validator, error): + from bootstrapvz.common.tools import log_check_call + import os.path + schema_path = os.path.join(os.path.dirname(__file__), + 'schema.yaml') + validator(data, schema_path) + log_check_call(['debconf-set-selections', '--checkonly'], + stdin=data['plugins']['debconf']) + + +def resolve_tasks(taskset, manifest): + import tasks + taskset.update([tasks.DebconfSetSelections]) diff --git a/bootstrapvz/plugins/debconf/schema.yaml b/bootstrapvz/plugins/debconf/schema.yaml new file mode 100644 index 0000000..c73e340 --- /dev/null +++ b/bootstrapvz/plugins/debconf/schema.yaml @@ -0,0 +1,14 @@ +$schema: http://json-schema.org/schema# +title: Manifest schema for the debconf plugin +type: object +properties: + plugins: + type: object + properties: + debconf: + name: Debconf selections to set + description: >- + This value should be an inline string in the + input format of debconf-set-selections(1). + type: string + required: [debconf] diff --git a/bootstrapvz/plugins/debconf/tasks.py b/bootstrapvz/plugins/debconf/tasks.py new file mode 100644 index 0000000..9781dd9 --- /dev/null +++ b/bootstrapvz/plugins/debconf/tasks.py @@ -0,0 +1,15 @@ +from bootstrapvz.base import Task +from bootstrapvz.common import phases +from bootstrapvz.common.tasks import packages +from bootstrapvz.common.tools import log_check_call + + +class DebconfSetSelections(Task): + description = 'Set debconf(7) selections from the manifest' + phase = phases.package_installation + successors = [packages.InstallPackages] + + @classmethod + def run(cls, info): + log_check_call(['chroot', info.root, 'debconf-set-selections'], + stdin=info.manifest.plugins['debconf'])