Allow both hosts sources: command line args and file.
This commit is contained in:
parent
4fce4a631c
commit
fa5175fee5
3 changed files with 23 additions and 17 deletions
|
@ -26,6 +26,7 @@ import shutil
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import pprint
|
import pprint
|
||||||
|
import itertools
|
||||||
|
|
||||||
import cdist
|
import cdist
|
||||||
|
|
||||||
|
@ -61,11 +62,17 @@ class Config(object):
|
||||||
"""
|
"""
|
||||||
if isinstance(source, str):
|
if isinstance(source, str):
|
||||||
import fileinput
|
import fileinput
|
||||||
for host in fileinput.input(files=(source)):
|
try:
|
||||||
yield host.strip() # remove leading and trailing whitespace
|
for host in fileinput.input(files=(source)):
|
||||||
|
# remove leading and trailing whitespace
|
||||||
|
yield host.strip()
|
||||||
|
except (IOError, OSError) as e:
|
||||||
|
raise cdist.Error("Error reading hosts from \'{}\'".format(
|
||||||
|
source))
|
||||||
else:
|
else:
|
||||||
for host in source:
|
if source:
|
||||||
yield host
|
for host in source:
|
||||||
|
yield host
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -77,7 +84,8 @@ class Config(object):
|
||||||
log = logging.getLogger("cdist")
|
log = logging.getLogger("cdist")
|
||||||
|
|
||||||
if args.manifest == '-' and args.hostfile == '-':
|
if args.manifest == '-' and args.hostfile == '-':
|
||||||
raise cdist.Error("Cannot read both, manifest and host file, from stdin")
|
raise cdist.Error(("Cannot read both, manifest and host file, "
|
||||||
|
"from stdin"))
|
||||||
# if no host source is specified then read hosts from stdin
|
# if no host source is specified then read hosts from stdin
|
||||||
if not (args.hostfile or args.host):
|
if not (args.hostfile or args.host):
|
||||||
args.hostfile = '-'
|
args.hostfile = '-'
|
||||||
|
@ -102,12 +110,8 @@ class Config(object):
|
||||||
time_start = time.time()
|
time_start = time.time()
|
||||||
|
|
||||||
hostcnt = 0
|
hostcnt = 0
|
||||||
if args.host:
|
for host in itertools.chain(cls.hosts(args.host),
|
||||||
host_source = args.host
|
cls.hosts(args.hostfile)):
|
||||||
else:
|
|
||||||
host_source = args.hostfile
|
|
||||||
|
|
||||||
for host in cls.hosts(host_source):
|
|
||||||
hostcnt += 1
|
hostcnt += 1
|
||||||
if args.parallel:
|
if args.parallel:
|
||||||
log.debug("Creating child process for %s", host)
|
log.debug("Creating child process for %s", host)
|
||||||
|
|
|
@ -64,9 +64,10 @@ Configure one or more hosts
|
||||||
environment variable.
|
environment variable.
|
||||||
|
|
||||||
-f HOSTFILE, --file HOSTFILE::
|
-f HOSTFILE, --file HOSTFILE::
|
||||||
Read hosts to operate on from specified file or from stdin if '-'
|
Read additional hosts to operate on from specified file
|
||||||
(each host on separate line). If no host or host file is
|
or from stdin if '-' (each host on separate line).
|
||||||
specified then, by default, read hosts from stdin.
|
If no host or host file is specified then, by default,
|
||||||
|
read hosts from stdin.
|
||||||
|
|
||||||
-i MANIFEST, --initial-manifest MANIFEST::
|
-i MANIFEST, --initial-manifest MANIFEST::
|
||||||
Path to a cdist manifest or - to read from stdin
|
Path to a cdist manifest or - to read from stdin
|
||||||
|
|
|
@ -90,9 +90,10 @@ def commandline():
|
||||||
help=('Add configuration directory (can be repeated, '
|
help=('Add configuration directory (can be repeated, '
|
||||||
'last one wins)'), action='append')
|
'last one wins)'), action='append')
|
||||||
parser['config'].add_argument('-f', '--file',
|
parser['config'].add_argument('-f', '--file',
|
||||||
help=('Read hosts to operate on from specified file or from stdin '
|
help=('Read additional hosts to operate on from specified file '
|
||||||
'if \'-\' (each host on separate line). If no host or host '
|
'or from stdin if \'-\' (each host on separate line). '
|
||||||
'file is specified then, by default, read hosts from stdin.'),
|
'If no host or host file is specified then, by default, '
|
||||||
|
'read hosts from stdin.'),
|
||||||
dest='hostfile', required=False)
|
dest='hostfile', required=False)
|
||||||
parser['config'].add_argument('-i', '--initial-manifest',
|
parser['config'].add_argument('-i', '--initial-manifest',
|
||||||
help='Path to a cdist manifest or \'-\' to read from stdin.',
|
help='Path to a cdist manifest or \'-\' to read from stdin.',
|
||||||
|
|
Loading…
Reference in a new issue