cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #04956
Re: [Merge] ~smoser/cloud-init:feature/subp-combine-output into cloud-init:master
Diff comments:
> diff --git a/cloudinit/util.py b/cloudinit/util.py
> index c0473b8..6eff880 100644
> --- a/cloudinit/util.py
> +++ b/cloudinit/util.py
> @@ -1843,9 +1843,59 @@ def subp_blob_in_tempfile(blob, *args, **kwargs):
> return subp(*args, **kwargs)
>
>
> -def subp(args, data=None, rcs=None, env=None, capture=True, shell=False,
> +def subp(args, data=None, rcs=None, env=None, capture=True,
> + combine_capture=False, shell=False,
similar to curtin in function, sure.
agree w.r.t signature evolution, but with kwargs we can sort; I think that makess it easier to search for an arg if you're looking for it, as well as the docstring.
> logstring=False, decode="replace", target=None, update_env=None,
> status_cb=None):
> + """Run a subprocess.
> +
> + :param args: command to run in a list. [cmd, arg1, arg2...]
> + :param data: input to the command, made available on its stdin.
> + :param rcs:
> + a list of allowed return codes. If subprocess exits with a value not
> + in this list, a ProcessExecutionError will be raised. By default,
> + data is returned as a string. See 'decode' parameter.
> + :param env: a dictionary for the command's environment.
> + :param capture:
> + boolean indicating if output should be captured. If True, then stderr
> + and stdout will be returned. If False, they will not be redirected.
> + :param combine_capture:
> + boolean indicating if stderr should be redirected to stdout. When True,
> + interleaved stderr and stdout will be returned as the first element of
> + a tuple, the second will be empty string or bytes (per decode).
> + if combine_capture is True, then output is captured independent of
> + the value of capture.
> + :param log_captured:
> + boolean indicating if output should be logged on capture. If
> + True, then stderr and stdout will be logged at DEBUG level. If
> + False, they will not be logged.
> + :param shell: boolean indicating if this should be run with a shell.
> + :param logstring:
> + the command will be logged to DEBUG. If it contains info that should
> + not be logged, then logstring will be logged instead.
> + :param decode:
> + if False, no decoding will be done and returned stdout and stderr will
> + be bytes. Other allowed values are 'strict', 'ignore', and 'replace'.
> + These values are passed through to bytes().decode() as the 'errors'
> + parameter. There is no support for decoding to other than utf-8.
> + :param target:
> + not supported, kwarg present only to make function signature similar
> + to curtin's subp.
> + :param update_env:
> + update the enviornment for this command with this dictionary.
> + this will not affect the current processes os.environ.
> + :param status_cb:
> + call this fuction with a single string argument before starting
> + and after finishing.
> +
> + :return
> + if not capturing, return is (None, None)
> + if capturing, stdout and stderr are returned.
> + if decode:
> + entries in tuple will be python2 unicode or python3 string
> + if not decode:
> + entries in tuple will be python2 string or python3 bytes
> + """
>
> # not supported in cloud-init (yet), for now kept in the call signature
> # to ease maintaining code shared between cloud-init and curtin
--
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/347066
Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:feature/subp-combine-output into cloud-init:master.
References