Exemple #1
0
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"])
Exemple #2
0
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'])
Exemple #3
0
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 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'])
Exemple #5
0
	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 {}
Exemple #6
0
 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 {}
Exemple #7
0
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])
Exemple #8
0
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')
def test_bogus_releasename():
    releases.get_release('nemo')