forked from ungleich-public/cdist
Merge remote-tracking branch 'telmich/master'
This commit is contained in:
commit
0f9d71423a
3 changed files with 41 additions and 32 deletions
40
bin/cdist
40
bin/cdist
|
@ -81,12 +81,12 @@ def commandline():
|
||||||
# Config
|
# Config
|
||||||
parser['config'] = parser['sub'].add_parser('config',
|
parser['config'] = parser['sub'].add_parser('config',
|
||||||
parents=[parser['loglevel'], parser['configinstall']])
|
parents=[parser['loglevel'], parser['configinstall']])
|
||||||
parser['config'].set_defaults(func=cdist.config.config)
|
parser['config'].set_defaults(func=config)
|
||||||
|
|
||||||
# Install
|
# Install
|
||||||
parser['install'] = parser['sub'].add_parser('install',
|
parser['install'] = parser['sub'].add_parser('install',
|
||||||
parents=[parser['loglevel'], parser['configinstall']])
|
parents=[parser['loglevel'], parser['configinstall']])
|
||||||
parser['install'].set_defaults(func=cdist.install.install)
|
parser['install'].set_defaults(func=install)
|
||||||
|
|
||||||
for p in parser:
|
for p in parser:
|
||||||
parser[p].epilog = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
|
parser[p].epilog = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
|
||||||
|
@ -102,6 +102,42 @@ def commandline():
|
||||||
log.debug(args)
|
log.debug(args)
|
||||||
args.func(args)
|
args.func(args)
|
||||||
|
|
||||||
|
def config(args):
|
||||||
|
configinstall(args, mode=cdist.config.Config)
|
||||||
|
|
||||||
|
def install(args):
|
||||||
|
configinstall(args, mode=cdist.install.Install)
|
||||||
|
|
||||||
|
def configinstall(args, mode):
|
||||||
|
"""Configure or install remote system"""
|
||||||
|
process = {}
|
||||||
|
|
||||||
|
time_start = datetime.datetime.now()
|
||||||
|
|
||||||
|
os.environ['__remote_exec'] = "ssh -o User=root -q"
|
||||||
|
os.environ['__remote_copy'] = "scp -o User=root -q"
|
||||||
|
|
||||||
|
for host in args.host:
|
||||||
|
c = mode(host, initial_manifest=args.manifest, base_path=args.cdist_home, debug=args.debug)
|
||||||
|
if args.parallel:
|
||||||
|
log.debug("Creating child process for %s", host)
|
||||||
|
process[host] = multiprocessing.Process(target=c.deploy_and_cleanup)
|
||||||
|
process[host].start()
|
||||||
|
else:
|
||||||
|
c.deploy_and_cleanup()
|
||||||
|
|
||||||
|
if args.parallel:
|
||||||
|
for p in process.keys():
|
||||||
|
log.debug("Joining process %s", p)
|
||||||
|
process[p].join()
|
||||||
|
|
||||||
|
# FIXME: error handling for parallel mode!
|
||||||
|
|
||||||
|
time_end = datetime.datetime.now()
|
||||||
|
log.info("Total processing time for %s host(s): %s", len(args.host),
|
||||||
|
(time_end - time_start).total_seconds())
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
logging.basicConfig(format='%(levelname)s: %(message)s')
|
logging.basicConfig(format='%(levelname)s: %(message)s')
|
||||||
|
|
|
@ -31,30 +31,3 @@ log = logging.getLogger(__name__)
|
||||||
|
|
||||||
class Config(cdist.config_install.ConfigInstall):
|
class Config(cdist.config_install.ConfigInstall):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def config(args):
|
|
||||||
"""Configure remote system"""
|
|
||||||
process = {}
|
|
||||||
|
|
||||||
time_start = datetime.datetime.now()
|
|
||||||
|
|
||||||
os.environ['__remote_exec'] = "ssh -o User=root -q"
|
|
||||||
os.environ['__remote_copy'] = "scp -o User=root -q"
|
|
||||||
|
|
||||||
for host in args.host:
|
|
||||||
c = Config(host, initial_manifest=args.manifest, base_path=args.cdist_home, debug=args.debug)
|
|
||||||
if args.parallel:
|
|
||||||
log.debug("Creating child process for %s", host)
|
|
||||||
process[host] = multiprocessing.Process(target=c.deploy_and_cleanup)
|
|
||||||
process[host].start()
|
|
||||||
else:
|
|
||||||
c.deploy_and_cleanup()
|
|
||||||
|
|
||||||
if args.parallel:
|
|
||||||
for p in process.keys():
|
|
||||||
log.debug("Joining process %s", p)
|
|
||||||
process[p].join()
|
|
||||||
|
|
||||||
time_end = datetime.datetime.now()
|
|
||||||
log.info("Total processing time for %s host(s): %s", len(args.host),
|
|
||||||
(time_end - time_start).total_seconds())
|
|
||||||
|
|
|
@ -90,13 +90,13 @@ class ConfigInstall:
|
||||||
|
|
||||||
# Submit debug flag to manifest, can be used by emulator and types
|
# Submit debug flag to manifest, can be used by emulator and types
|
||||||
if self.debug:
|
if self.debug:
|
||||||
env['__debug'] = "yes"
|
env['__debug'] = "yes"
|
||||||
|
|
||||||
# Required for recording source in emulator
|
# Required for recording source in emulator
|
||||||
env['__cdist_manifest'] = manifest_path
|
env['__cdist_manifest'] = manifest_path
|
||||||
|
|
||||||
# Required to find types in emulator
|
# Required to find types in emulator
|
||||||
env['__cdist_type_base_path'] = self.context.type_base_path
|
env['__cdist_type_base_path'] = self.context.type_base_path
|
||||||
|
|
||||||
# Other environment stuff
|
# Other environment stuff
|
||||||
if extra_env:
|
if extra_env:
|
||||||
|
@ -105,7 +105,7 @@ class ConfigInstall:
|
||||||
cdist.exec.shell_run_or_debug_fail(manifest_path, [manifest_path], env=env)
|
cdist.exec.shell_run_or_debug_fail(manifest_path, [manifest_path], env=env)
|
||||||
|
|
||||||
def object_run(self, cdist_object):
|
def object_run(self, cdist_object):
|
||||||
"""Run gencode or code for an object"""
|
"""Run gencode and code for an object"""
|
||||||
log.debug("Running object %s", cdist_object)
|
log.debug("Running object %s", cdist_object)
|
||||||
|
|
||||||
# Catch requirements, which re-call us
|
# Catch requirements, which re-call us
|
||||||
|
|
Loading…
Reference in a new issue