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
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to