def check_output(*popenargs, **kwargs): r"""Run command with arguments and return its output as a byte string. If the exit code was non-zero it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute and output in the output attribute. The arguments are the same as for the Popen constructor. Example: >>> check_output(["ls", "-l", "/dev/null"]) 'crw-rw-rw- 1 root root 1, 3 Oct 18 2007 /dev/null\n' The stdout argument is not allowed as it is used internally. To capture standard error in the result, use stderr=STDOUT. >>> check_output(["/bin/sh", "-c", ... "ls -l non_existent_file ; exit 0"], ... stderr=STDOUT) 'ls: non_existent_file: No such file or directory\n' """ if 'stdout' in kwargs: raise ValueError('stdout argument not allowed, it will be overridden.') logging.debug(' '.join(popenargs[0])) process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs) output, unused_err = process.communicate() retcode = process.poll() if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] raise subprocess.CalledProcessError(retcode, cmd) return output
def _update_server_options(self, server, key, value): """Hack to allow us to make changes to the options used by backends. A possible better solution would be to have a global config registry. """ last = server applications = [] while (hasattr(last, 'applications') or hasattr(last, 'application') or hasattr(last, 'options')): logging.debug('UPDATE %s: O %s A %s AS %s', last.__class__, getattr(last, 'options', None), getattr(last, 'application', None), getattr(last, 'applications', None)) if hasattr(last, 'options'): last.options[key] = value # NOTE(termie): paste.urlmap.URLMap stores applications in this format if hasattr(last, 'applications'): for app in last.applications: applications.append(app[1]) if hasattr(last, 'application'): last = last.application elif len(applications): last = applications.pop() else: break
def import_class(import_str): """Returns a class from a string including module and class.""" mod_str, _sep, class_str = import_str.rpartition('.') try: __import__(mod_str) return getattr(sys.modules[mod_str], class_str) except (ImportError, ValueError, AttributeError), exc: logging.debug('Inner Exception: %s', exc) raise