[
https://issues.apache.org/jira/browse/MESOS-2859?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Peter Kolloch updated MESOS-2859:
---------------------------------
Labels: mesosphere (was: )
> Semantics of CommandInfo shell/value/arguments are very confusing
> -----------------------------------------------------------------
>
> Key: MESOS-2859
> URL: https://issues.apache.org/jira/browse/MESOS-2859
> Project: Mesos
> Issue Type: Documentation
> Reporter: Peter Kolloch
> Labels: mesosphere
>
> CommandInfo includes the following fields:
> optional bool shell = 6 [default = true];
> optional string value = 3;
> repeated string arguments = 7;
> There is some documentation for them which explains their behavior for the
> command executor but not for the docker executor:
> https://github.com/apache/mesos/blob/master/include/mesos/mesos.proto#L280
> Both executors work fairly differently when you use shell=false and arguments.
> For the command executor, executing "echo $PORT" withOUT variable
> substitution could be achieved with shell=false value="/usr/bin/echo"
> arguments=["/usr/bin/echo", "$PORT"]. See
> https://github.com/apache/mesos/blob/0.22.1/src/launcher/executor.cpp#L245
> For the docker executor, using the same arguments with the "ubuntu" image (no
> default entrypoint) would result in executing "/usr/bin/echo /usr/bin/echo
> $PORT" which is rather confusing. See
> https://github.com/apache/mesos/blob/0.22.1/src/docker/docker.cpp#L451-L457
> For the command executor, I would propose to emphasize that for all sane use
> cases `arguments(0)` should be equal to `value` if you use shell = false.
> It would also help to include some example, e.g.:
> * Executing "python -m SimpleHTTPServer $PORT" with variable substitution =>
> shell=true value="python -m SimpleHTTPServer $PORT", arguments are ignored
> * Executing "echo $PORT" withOUT variable substitution => shell=false
> value="/usr/bin/echo" arguments=["/usr/bin/echo", "$PORT"]
> In the case of docker you actually need to distinguish between containers
> with a default entrypoint and the ones without.
> With the ubuntu image (without default endpoint) examples could be:
> * Executing "python -m SimpleHTTPServer $PORT" with variable substitution =>
> shell=true value="python -m SimpleHTTPServer $PORT", arguments are ignored
> * Executing "echo $PORT" withOUT variable substitution => shell=false
> value="/usr/bin/echo" arguments=["$PORT"] OR arguments=["/usr/bin/echo",
> "$PORT"]
> Thanks!
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)