2014-11-30 14:17:06 +01:00
|
|
|
from bootstrapvz.remote.build_servers import LocalBuildServer
|
2014-08-31 13:45:35 +02:00
|
|
|
|
2014-11-30 14:09:21 +01:00
|
|
|
# Register deserialization handlers for objects
|
|
|
|
# that will pass between server and client
|
2014-11-30 14:13:43 +01:00
|
|
|
from bootstrapvz.remote import register_deserialization_handlers
|
2014-11-30 14:09:21 +01:00
|
|
|
register_deserialization_handlers()
|
|
|
|
|
2014-08-31 13:45:35 +02:00
|
|
|
|
|
|
|
# Snatched from here: http://stackoverflow.com/a/7205107
|
|
|
|
def merge_dicts(*args):
|
|
|
|
def merge(a, b, path=None):
|
|
|
|
if path is None:
|
|
|
|
path = []
|
|
|
|
for key in b:
|
|
|
|
if key in a:
|
|
|
|
if isinstance(a[key], dict) and isinstance(b[key], dict):
|
|
|
|
merge(a[key], b[key], path + [str(key)])
|
|
|
|
elif a[key] == b[key]:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception('Conflict at %s' % '.'.join(path + [str(key)]))
|
|
|
|
else:
|
|
|
|
a[key] = b[key]
|
|
|
|
return a
|
|
|
|
return reduce(merge, args, {})
|
|
|
|
|
|
|
|
|
2014-11-30 00:33:42 +01:00
|
|
|
def bootstrap(manifest, build_server):
|
|
|
|
if isinstance(build_server, LocalBuildServer):
|
|
|
|
from bootstrapvz.base.main import run
|
|
|
|
bootstrap_info = run(manifest)
|
|
|
|
else:
|
2014-11-30 14:13:43 +01:00
|
|
|
from bootstrapvz.remote.main import run
|
2014-11-30 15:42:38 +01:00
|
|
|
bootstrap_info = run(manifest, build_server)
|
2014-11-30 00:33:42 +01:00
|
|
|
return bootstrap_info
|
|
|
|
|
|
|
|
|
|
|
|
def test(instance):
|
2014-11-25 22:45:03 +01:00
|
|
|
pass
|