def _doCheckConfig(nodes, installed, list_scripts): results = [] manager = config.Config.manager() all = [(node, os.path.join(config.Config.tmpdir, "check-config-%s" % node.name)) for node in nodes] nodes = [] for (node, cwd) in all: if os.path.isdir(cwd): if not execute.rmdir(config.Config.manager(), cwd): util.output("cannot remove directory %s on manager" % cwd) continue if not execute.mkdir(config.Config.manager(), cwd): util.output("cannot create directory %s on manager" % cwd) continue nodes += [(node, cwd)] cmds = [] for (node, cwd) in nodes: env = _makeEnvParam(node) installed_policies = installed and "1" or "0" print_scripts = list_scripts and "1" or "0" install.makeLayout(cwd, True) install.makeLocalNetworks(cwd, True) install.makeConfig(cwd, True) cmd = os.path.join( config.Config.scriptsdir, "check-config") + " %s %s %s %s" % ( installed_policies, print_scripts, cwd, " ".join( _makeBroParams(node, False))) cmd += " broctl/check" cmds += [((node, cwd), cmd, env, None)] for ((node, cwd), success, output) in execute.runLocalCmdsParallel(cmds): if success: util.output("%s is ok." % node.name) if list_scripts: for line in output: util.output(" %s" % line) else: ok = False util.output("%s failed." % node.name) for line in output: util.output(" %s" % line) execute.rmdir(manager, cwd) return results
def _doCheckConfig(nodes, installed, list_scripts): results = [] manager = config.Config.manager() all = [(node, os.path.join(config.Config.tmpdir, "check-config-%s" % node.name)) for node in nodes] nodes = [] for (node, cwd) in all: if os.path.isdir(cwd): if not execute.rmdir(config.Config.manager(), cwd): util.output("cannot remove directory %s on manager" % cwd) continue if not execute.mkdir(config.Config.manager(), cwd): util.output("cannot create directory %s on manager" % cwd) continue nodes += [(node, cwd)] cmds = [] for (node, cwd) in nodes: env = _makeEnvParam(node) installed_policies = installed and "1" or "0" print_scripts = list_scripts and "1" or "0" install.makeLayout(cwd, True) install.makeLocalNetworks(cwd, True) install.makeConfig(cwd, True) cmd = os.path.join(config.Config.scriptsdir, "check-config") + " %s %s %s %s" % (installed_policies, print_scripts, cwd, " ".join(_makeBroParams(node, False))) cmd += " broctl/check" cmds += [((node, cwd), cmd, env, None)] for ((node, cwd), success, output) in execute.runLocalCmdsParallel(cmds): results += [(node, success)] if success: util.output("%s is ok." % node.name) if list_scripts: for line in output: util.output(" %s" % line) else: ok = False util.output("%s failed." % node.name) for line in output: util.output(" %s" % line) execute.rmdir(manager, cwd) return results
def _doCheckConfig(nodes, installed, list_scripts): results = [] manager = config.Config.manager() all = [(node, os.path.join(config.Config.tmpdir, "check-config-%s" % node.name)) for node in nodes] if not os.path.exists(os.path.join(config.Config.scriptsdir, "broctl-config.sh")): util.output("error: broctl-config.sh not found (try 'broctl install')") # Return a failure for one node to indicate that the command failed results += [(all[0][0], False)] return results nodes = [] for (node, cwd) in all: if os.path.isdir(cwd): if not execute.rmdir(config.Config.manager(), cwd): util.output("cannot remove directory %s on manager" % cwd) results += [(node, False)] continue if not execute.mkdir(config.Config.manager(), cwd): util.output("cannot create directory %s on manager" % cwd) results += [(node, False)] continue nodes += [(node, cwd)] cmds = [] for (node, cwd) in nodes: env = _makeEnvParam(node) installed_policies = installed and "1" or "0" print_scripts = list_scripts and "1" or "0" install.makeLayout(cwd, True) install.makeLocalNetworks(cwd, True) install.makeConfig(cwd, True) cmd = os.path.join(config.Config.scriptsdir, "check-config") + " %s %s %s %s" % ( installed_policies, print_scripts, cwd, " ".join(_makeBroParams(node, False)), ) cmd += " broctl/check" cmds += [((node, cwd), cmd, env, None)] for ((node, cwd), success, output) in execute.runLocalCmdsParallel(cmds): results += [(node, success)] if success: util.output("%s scripts are ok." % node.name) if list_scripts: for line in output: util.output(" %s" % line) else: util.output("%s scripts failed." % node.name) for line in output: util.output(" %s" % line) execute.rmdir(manager, cwd) return results