mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-22 18:00:35 +00:00
Fix bugs when picking the build server
This commit is contained in:
parent
cee05e3fd0
commit
ece717a79f
5 changed files with 29 additions and 14 deletions
|
@ -3,7 +3,7 @@ import logging
|
|||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def pick_build_server(build_servers, preferences, manifest):
|
||||
def pick_build_server(build_servers, manifest, preferences={}):
|
||||
# Validate the build servers list
|
||||
from bootstrapvz.common.tools import load_data
|
||||
import os.path
|
||||
|
@ -11,10 +11,10 @@ def pick_build_server(build_servers, preferences, manifest):
|
|||
import jsonschema
|
||||
jsonschema.validate(build_servers, schema)
|
||||
|
||||
if manifest.provider['name'] == 'ec2':
|
||||
must_bootstrap = 'ec2-' + manifest.volume['backing']
|
||||
if manifest['provider']['name'] == 'ec2':
|
||||
must_bootstrap = 'ec2-' + manifest['volume']['backing']
|
||||
else:
|
||||
must_bootstrap = manifest.provider['name']
|
||||
must_bootstrap = manifest['provider']['name']
|
||||
|
||||
def matches(name, settings):
|
||||
if preferences.get('name', name) != name:
|
||||
|
@ -43,6 +43,11 @@ class BuildServer(object):
|
|||
self.can_bootstrap = settings['can_bootstrap']
|
||||
self.release = settings.get('release', None)
|
||||
|
||||
def apply_build_settings(self, manifest_data):
|
||||
if manifest_data['provider']['name'] == 'virtualbox' and 'guest_additions' in manifest_data['provider']:
|
||||
manifest_data['provider']['guest_additions'] = self.build_settings['guest_additions']
|
||||
return manifest_data
|
||||
|
||||
|
||||
class LocalBuildServer(BuildServer):
|
||||
pass
|
||||
|
|
|
@ -8,12 +8,11 @@ def main():
|
|||
# Get the commandline arguments
|
||||
opts = get_opts()
|
||||
|
||||
# Load the manifest
|
||||
from bootstrapvz.base.manifest import Manifest
|
||||
manifest = Manifest(path=opts['MANIFEST'])
|
||||
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
|
||||
from bootstrapvz.common.tools import load_data
|
||||
build_servers = load_data(opts['--servers'])
|
||||
# Pick a build server
|
||||
from build_servers import pick_build_server
|
||||
|
@ -22,7 +21,14 @@ def main():
|
|||
preferences['name'] = opts['--name']
|
||||
if opts['--release'] is not None:
|
||||
preferences['release'] = opts['--release']
|
||||
build_server = pick_build_server(build_servers, preferences, manifest)
|
||||
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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
from bootstrapvz.common.tools import load_data
|
||||
|
||||
# tox ensures that the cwd is the project root
|
||||
build_servers = load_data('build-servers.yml')
|
|
@ -1,5 +1,3 @@
|
|||
from bootstrapvz.remote.build_servers import LocalBuildServer
|
||||
|
||||
# Register deserialization handlers for objects
|
||||
# that will pass between server and client
|
||||
from bootstrapvz.remote import register_deserialization_handlers
|
||||
|
@ -26,6 +24,7 @@ def merge_dicts(*args):
|
|||
|
||||
|
||||
def bootstrap(manifest, build_server):
|
||||
from bootstrapvz.remote.build_servers import LocalBuildServer
|
||||
if isinstance(build_server, LocalBuildServer):
|
||||
from bootstrapvz.base.main import run
|
||||
bootstrap_info = run(manifest)
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import tools
|
||||
from manifests import partials
|
||||
from bootstrapvz.base.manifest import Manifest
|
||||
from bootstrapvz.remote.build_servers import pick_build_server
|
||||
from . import build_servers
|
||||
|
||||
|
||||
def test_virtualbox_unpartitioned_extlinux():
|
||||
|
@ -18,9 +20,8 @@ volume:
|
|||
manifest_data = tools.merge_dicts(partials['base'], partials['stable64'],
|
||||
partials['unpartitioned'], manifest_data)
|
||||
|
||||
manifest = Manifest(data=manifest_data)
|
||||
build_server = tools.pick_build_server(manifest)
|
||||
manifest_data['provider']['guest_additions'] = build_server.build_settings['guest_additions']
|
||||
build_server = pick_build_server(build_servers, manifest_data)
|
||||
manifest_data = build_server.apply_build_settings(manifest_data)
|
||||
manifest = Manifest(data=manifest_data)
|
||||
|
||||
bootstrap_info = tools.bootstrap(manifest, build_server)
|
||||
|
|
Loading…
Add table
Reference in a new issue