Thank you very much! That answers all my questions.
On Thu, Jan 22, 2015 at 9:35 PM, Niklas Nielsen <[email protected]>
wrote:
> First off, you can only do this per executor - not per task.
> To my understanding, the webui just picks up the executor directory from
> the slave state.json, but the container id should also be available there.
> Here is a snippet from a run of a echo 'foobar' > baz.txt job:
>
> The slave state endpoint:
> {
> ...
> "completed_frameworks": [
> {
> ...
> "completed_executors": [
> {
> ...
> "*container*": "26491475-9515-464d-bcd0-c72790489a85",
> "*directory*":
> "/tmp/mesos/0/slaves/20150122-175457-16777343-5050-18106-S0/frameworks/20150122-182305-16777343-5050-18833-0000/executors/bar/runs/26491475-9515-464d-bcd0-c72790489a85",
> "id": "bar",
> "name": "Command Executor (Task: bar) (Command: sh -c 'echo
> 'foobar...')",
> ...
> }
> ],
> "executors": [],
> ...
> }
> ],
> ...
> "frameworks": [],
> ...
> }
>
>
> From that point on, you can browse (path 'just' URL encoded):
>
> $ curl http://
> <host>:5050/files/browse.json?path=%2Ftmp%2Fmesos%2F0%2Fslaves%2F20150122-175457-16777343-5050-18106-S0%2Fframeworks%2F20150122-182305-16777343-5050-18833-0000%2Fexecutors%2Fbar%2Fruns%2F26491475-9515-464d-bcd0-c72790489a85
> [
> {
> "gid": "wheel",
> "mode": "-rw-r--r--",
> "mtime": 1421979805,
> "nlink": 1,
> "path":
> "/tmp/mesos/0/slaves/20150122-175457-16777343-5050-18106-S0/frameworks/20150122-182305-16777343-5050-18833-0000/executors/bar/runs/26491475-9515-464d-bcd0-c72790489a85/baz.txt",
> "size": 7,
> "uid": "nnielsen"
> }
> ]
>
> Or grab the file:
>
> $ curl
> http://localhost:5050/files/read.json?path=%2Ftmp%2Fmesos%2F0%2Fslaves%2F20150122-175457-16777343-5050-18106-S0%2Fframeworks%2F20150122-182305-16777343-5050-18833-0000%2Fexecutors%2Fbar%2Fruns%2F26491475-9515-464d-bcd0-c72790489a85%2Fbaz.txt\&offset=0
> <http://localhost:5050/files/read.json?path=%2Ftmp%2Fmesos%2F0%2Fslaves%2F20150122-175457-16777343-5050-18106-S0%2Fframeworks%2F20150122-182305-16777343-5050-18833-0000%2Fexecutors%2Fbar%2Fruns%2F26491475-9515-464d-bcd0-c72790489a85%2Fbaz.txt%5C&offset=0>
> {
> "data": "foobar\n",
> "offset": 0
> }
>
> Hope this helps.
>
> Niklas
>
> On 21 January 2015 at 13:53, David Greenberg <[email protected]>
> wrote:
>
>> It seems that if I take the URL that the "Download" button for stderr
>> points to and curl it, I get the file. But, if I change the container_id to
>> "latest" instead of the UUID, then I get a 404. Is there another way to
>> resolve what the container_id is, since it seems critical to get files
>> programmatically.
>>
>> On Wed, Jan 21, 2015 at 3:17 PM, Ian Downes <[email protected]> wrote:
>>
>>> No, the container id is generated by the slave when it launches the
>>> executor for a task (see Framework::launchExecutor() in
>>> src/slave/slave.cpp).
>>>
>>> However, the 'latest' symlink will point to the most recent container_id
>>> directory so you can likely just use that unless your framework is re-using
>>> executor_ids (which would mean a new container for each run).
>>>
>>> On Wed, Jan 21, 2015 at 11:52 AM, David Greenberg <
>>> [email protected]> wrote:
>>>
>>>> Is it possible to know the container_id prior when you submit the
>>>> TaskInfo? If not, how can you find it out?
>>>>
>>>> On Wed, Jan 21, 2015 at 1:17 PM, Ian Downes <[email protected]>
>>>> wrote:
>>>>
>>>>> The final component is the container_id. Take a look in
>>>>> src/slave/paths.hpp to see the directory layout.
>>>>>
>>>>> On Wed, Jan 21, 2015 at 8:50 AM, David Greenberg <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> So, I've looked into this more, and the UUID in "runs" doesn't appear
>>>>>> appear to be the task-id, executor-id, or framework-id. do you have any
>>>>>> idea what it could be?
>>>>>>
>>>>>> On Tue, Jan 13, 2015 at 5:21 PM, David Greenberg <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Thank you for your answers!
>>>>>>>
>>>>>>> On Tue, Jan 13, 2015 at 5:15 PM, Tim Chen <[email protected]> wrote:
>>>>>>>
>>>>>>>> You can get the slave_id, framework_id and executor_id of a task
>>>>>>>> all from state.json.
>>>>>>>>
>>>>>>>> ie:
>>>>>>>>
>>>>>>>>
>>>>>>>> - {
>>>>>>>> - executor_id: "20141231-115728-16777343-5050-49193-S0",
>>>>>>>> - framework_id: "20141231-115728-16777343-5050-49193-0000",
>>>>>>>> - id: "1",
>>>>>>>> - labels: [ ],
>>>>>>>> - name: "Task 1",
>>>>>>>> - resources:
>>>>>>>> {
>>>>>>>> - cpus: 6,
>>>>>>>> - disk: 0,
>>>>>>>> - mem: 13312
>>>>>>>> },
>>>>>>>> - slave_id: "20141231-115728-16777343-5050-49193-S0",
>>>>>>>> - state: "TASK_KILLED",
>>>>>>>> - statuses:
>>>>>>>> [
>>>>>>>> -
>>>>>>>> {
>>>>>>>> - state: "TASK_RUNNING",
>>>>>>>> - timestamp: 1420056049.88177
>>>>>>>> },
>>>>>>>> -
>>>>>>>> {
>>>>>>>> - state: "TASK_KILLED",
>>>>>>>> - timestamp: 1420056124.66483
>>>>>>>> }
>>>>>>>> ]
>>>>>>>> },
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jan 13, 2015 at 1:48 PM, David Greenberg <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> I was trying to figure out how to programmatically access a task's
>>>>>>>>> stdout & stderr, and I don't fully understand how the URL is
>>>>>>>>> constructed.
>>>>>>>>> It seems to be of the form http://
>>>>>>>>> $slave_url:5050/read.json?$work_dir/work/slaves/$slave_id/frameworks/$framework_id/executors/$executor_id/runs/$something
>>>>>>>>>
>>>>>>>>> What is the $something? Is there an easier way, given just the
>>>>>>>>> task_id, to find where the output is?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> David
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>