def validate_manifest(data, validator, error): """Validates the manifest using the base manifest :param dict data: The data of the manifest :param function validator: The function that validates the manifest given the data and a path :param function error: The function tha raises an error when the validation fails """ import os.path schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "manifest-schema.yml")) validator(data, schema_path) from bootstrapvz.common.releases import get_release from bootstrapvz.common.releases import squeeze release = get_release(data["system"]["release"]) if release < squeeze: error("Only Debian squeeze and later is supported", ["system", "release"]) # Check the bootloader/partitioning configuration. # Doing this via the schema is a pain and does not output a useful error message. if data["system"]["bootloader"] == "grub": if data["volume"]["partitions"]["type"] == "none": error("Grub cannot boot from unpartitioned disks", ["system", "bootloader"]) if release == squeeze: error("Grub installation on squeeze is not supported", ["system", "bootloader"])
def validate_manifest(data, validator, error): """Validates the manifest using the base manifest :param dict data: The data of the manifest :param function validator: The function that validates the manifest given the data and a path :param function error: The function tha raises an error when the validation fails """ import os.path schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml')) validator(data, schema_path) from bootstrapvz.common.releases import get_release from bootstrapvz.common.releases import squeeze release = get_release(data['system']['release']) if release < squeeze: error('Only Debian squeeze and later is supported', ['system', 'release']) # Check the bootloader/partitioning configuration. # Doing this via the schema is a pain and does not output a useful error message. if data['system']['bootloader'] == 'grub': if data['volume']['partitions']['type'] == 'none': error('Grub cannot boot from unpartitioned disks', ['system', 'bootloader']) if release == squeeze: error('Grub installation on squeeze is not supported', ['system', 'bootloader'])
def validate_manifest(data, validator, error): validator(data, rel_path(__file__, 'manifest-schema.yml')) from bootstrapvz.common.releases import get_release if get_release(data['system']['release']) == wheezy: # prefs is a generator of apt preferences across files in the manifest prefs = (item for vals in data.get('packages', {}).get('preferences', {}).values() for item in vals) if not any('linux-image' in item['package'] and 'wheezy-backports' in item['pin'] for item in prefs): msg = 'The backports kernel is required for the docker daemon to function properly' error(msg, ['packages', 'preferences'])
def parse(self): """Parses the manifest. Well... "parsing" is a big word. The function really just sets up some convenient attributes so that tasks don't have to access information with info.manifest.data['section'] but can do it with info.manifest.section. """ self.name = self.data['name'] self.provider = self.data['provider'] self.bootstrapper = self.data['bootstrapper'] self.volume = self.data['volume'] self.system = self.data['system'] from bootstrapvz.common.releases import get_release self.release = get_release(self.system['release']) # The packages and plugins section is not required self.packages = self.data['packages'] if 'packages' in self.data else {} self.plugins = self.data['plugins'] if 'plugins' in self.data else {}
def parse(self): """Parses the manifest. Well... "parsing" is a big word. The function really just sets up some convenient attributes so that tasks don't have to access information with info.manifest.data['section'] but can do it with info.manifest.section. """ self.name = self.data['name'] self.provider = self.data['provider'] self.bootstrapper = self.data['bootstrapper'] self.volume = self.data['volume'] self.system = self.data['system'] from bootstrapvz.common.releases import get_release self.release = get_release(self.system['release']) # The packages and plugins sections are not required self.packages = self.data['packages'] if 'packages' in self.data else {} self.plugins = self.data['plugins'] if 'plugins' in self.data else {}
def validate_manifest(data, validator, error): """Validates the manifest using the base manifest :param dict data: The data of the manifest :param function validator: The function that validates the manifest given the data and a path :param function error: The function tha raises an error when the validation fails """ import os.path schema_path = os.path.normpath( os.path.join(os.path.dirname(__file__), 'manifest-schema.yml')) validator(data, schema_path) from bootstrapvz.common.releases import get_release from bootstrapvz.common.releases import squeeze release = get_release(data['system']['release']) if release < squeeze: error('Only Debian squeeze and later is supported', ['system', 'release']) # Check the bootloader/partitioning configuration. # Doing this via the schema is a pain and does not output a useful error message. if data['system']['bootloader'] == 'grub': if data['volume']['partitions']['type'] == 'none': error('Grub cannot boot from unpartitioned disks', ['system', 'bootloader']) if release == squeeze: error('Grub installation on squeeze is not supported', ['system', 'bootloader']) # Check the provided apt.conf(5) options if 'packages' in data: for name, val in data['packages'].get('apt.conf.d', {}).iteritems(): from bootstrapvz.common.tools import log_call status, _, _ = log_call(['apt-config', '-c=/dev/stdin', 'dump'], stdin=val + '\n') if status != 0: error('apt.conf(5) syntax error', ['packages', 'apt.conf.d', name])
def validate_manifest(data, validator, error): """Validates the manifest using the base manifest :param dict data: The data of the manifest :param function validator: The function that validates the manifest given the data and a path :param function error: The function tha raises an error when the validation fails """ import os.path schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml')) validator(data, schema_path) from bootstrapvz.common.releases import get_release from bootstrapvz.common.releases import squeeze release = get_release(data['system']['release']) if release < squeeze: error('Only Debian squeeze and later is supported', ['system', 'release']) # Check the bootloader/partitioning configuration. # Doing this via the schema is a pain and does not output a useful error message. if data['system']['bootloader'] == 'grub': if data['volume']['partitions']['type'] == 'none': error('Grub cannot boot from unpartitioned disks', ['system', 'bootloader']) if release == squeeze: error('Grub installation on squeeze is not supported', ['system', 'bootloader']) # Check the provided apt.conf(5) options if 'packages' in data: for name, val in data['packages'].get('apt.conf.d', {}).iteritems(): from bootstrapvz.common.tools import log_call status, _, _ = log_call(['apt-config', '-c=/dev/stdin', 'dump'], stdin=val + '\n') if status != 0: error('apt.conf(5) syntax error', ['packages', 'apt.conf.d', name])
def test_bogus_releasename(): releases.get_release('nemo')