Esempio n. 1
0
def boot_manifest(manifest_data, boot_vars={}):
    from bootstrapvz.common.tools import load_data
    build_servers = load_data('build-servers.yml')
    from bootstrapvz.remote.build_servers import pick_build_server
    build_server = pick_build_server(build_servers, manifest_data)

    manifest_data = build_server.apply_build_settings(manifest_data)
    from bootstrapvz.base.manifest import Manifest
    manifest = Manifest(data=manifest_data)

    import importlib
    provider_module = importlib.import_module('tests.system.providers.' +
                                              manifest.provider['name'])

    prepare_bootstrap = getattr(provider_module, 'prepare_bootstrap', noop)
    with prepare_bootstrap(manifest, build_server):
        bootstrap_info = None
        log.info('Connecting to build server')
        with build_server.connect() as connection:
            log.info('Building manifest')
            bootstrap_info = connection.run(manifest)

        log.info('Creating and booting instance')
        with provider_module.boot_image(manifest, build_server, bootstrap_info,
                                        **boot_vars) as instance:
            yield instance
Esempio n. 2
0
 def validate_manifest(path):
     manifest = Manifest(path=path)
     assert_true(manifest.data)
     assert_true(manifest.data['name'])
     assert_true(manifest.data['provider'])
     assert_true(manifest.data['bootstrapper'])
     assert_true(manifest.data['volume'])
     assert_true(manifest.data['system'])
Esempio n. 3
0
def validate_manifests(path):
    """
    manifests_tests - validate_manifests.

    Actually creates the manifest for a given path
    and checks that all the data values have successfully
    been created.
    """
    manifest = Manifest(path)

    assert_true(manifest.data)
    assert_true(manifest.data['provider'])
    assert_true(manifest.data['bootstrapper'])
    assert_true(manifest.data['image'])
    assert_true(manifest.data['volume'])
    assert_true(manifest.data['system'])
Esempio n. 4
0
def main():
    """Main function for invoking the bootstrap process remotely
	"""
    # Get the commandline arguments
    opts = get_opts()

    from bootstrapvz.common.tools import load_data
    # load the manifest data, we might want to modify it later on
    manifest_data = load_data(opts['MANIFEST'])

    # load the build servers file
    build_servers = load_data(opts['--servers'])
    # Pick a build server
    from build_servers import pick_build_server
    preferences = {}
    if opts['--name'] is not None:
        preferences['name'] = opts['--name']
    if opts['--release'] is not None:
        preferences['release'] = opts['--release']
    build_server = pick_build_server(build_servers, manifest_data, preferences)

    # Apply the build server settings to the manifest (e.g. the virtualbox guest additions path)
    manifest_data = build_server.apply_build_settings(manifest_data)

    # Load the manifest
    from bootstrapvz.base.manifest import Manifest
    manifest = Manifest(path=opts['MANIFEST'], data=manifest_data)

    # Set up logging
    from bootstrapvz.base.main import setup_loggers
    setup_loggers(opts)

    # Register deserialization handlers for objects
    # that will pass between server and client
    from . import register_deserialization_handlers
    register_deserialization_handlers()

    # Everything has been set up, connect to the server and begin the bootstrapping process
    with build_server.connect() as connection:
        connection.run(manifest,
                       debug=opts['--debug'],
                       dry_run=opts['--dry-run'])
Esempio n. 5
0
 def dry_run(path):
     manifest = Manifest(path=path)
     run(manifest, dry_run=True)