Disallow --forks 0

Without at least one worker process, things break:

Traceback (most recent call last):
  File "/home/ams/extern/ansible/ansible/lib/ansible/executor/process/result.py", line 103, in run
    result = self._read_worker_result()
  File "/home/ams/extern/ansible/ansible/lib/ansible/executor/process/result.py", line 69, in _read_worker_result
    (worker_prc, main_q, rslt_q) = self._workers[self._cur_worker]
IndexError: list index out of range
This commit is contained in:
Abhijit Menon-Sen 2015-08-02 14:10:42 +05:30
parent cf35bdbdf9
commit 8de70fa657
3 changed files with 7 additions and 3 deletions

View file

@ -186,7 +186,7 @@ class CLI(object):
self.options.become_method = 'su' self.options.become_method = 'su'
def validate_conflicts(self, vault_opts=False, runas_opts=False): def validate_conflicts(self, vault_opts=False, runas_opts=False, fork_opts=False):
''' check for conflicting options ''' ''' check for conflicting options '''
op = self.options op = self.options
@ -211,6 +211,10 @@ class CLI(object):
"and become arguments ('--become', '--become-user', and '--ask-become-pass')" "and become arguments ('--become', '--become-user', and '--ask-become-pass')"
" are exclusive of each other") " are exclusive of each other")
if fork_opts:
if op.forks < 1:
self.parser.error("The number of processes (--forks) must be >= 1")
@staticmethod @staticmethod
def expand_tilde(option, opt, value, parser): def expand_tilde(option, opt, value, parser):
setattr(parser.values, option.dest, os.path.expanduser(value)) setattr(parser.values, option.dest, os.path.expanduser(value))

View file

@ -60,7 +60,7 @@ class AdHocCLI(CLI):
raise AnsibleOptionsError("Missing target hosts") raise AnsibleOptionsError("Missing target hosts")
self.display.verbosity = self.options.verbosity self.display.verbosity = self.options.verbosity
self.validate_conflicts(runas_opts=True, vault_opts=True) self.validate_conflicts(runas_opts=True, vault_opts=True, fork_opts=True)
return True return True

View file

@ -76,7 +76,7 @@ class PlaybookCLI(CLI):
raise AnsibleOptionsError("You must specify a playbook file to run") raise AnsibleOptionsError("You must specify a playbook file to run")
self.display.verbosity = self.options.verbosity self.display.verbosity = self.options.verbosity
self.validate_conflicts(runas_opts=True, vault_opts=True) self.validate_conflicts(runas_opts=True, vault_opts=True, fork_opts=True)
def run(self): def run(self):