-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/51879/#review149033
-----------------------------------------------------------
The addition of `parseText` and `parseValidResources` feels unnecessary to me.
I think we can reuse `convertJSON()` to achieve the same.
Overall I think the following steps would be simpler and more elegant.
## Patch 1: Change convertJSON() to return a Try<vector<Resource>>
This way the empty disks in the result are not dropped.
```
vector<Resource> convertJSON(
const JSON::Array& resourcesJSON,
const string& defaultRole)
```
I also don't see why `convertJSON()` needs to fail on empty resources since
they are allowed in the regular string formatted resources specification. Maybe
we can have a **patch 0** that changes that?
The current lone call site can just construct `Resources` from
`vector<Resource>`.
Then make convertJSON a public static member method.
## Patch 2: Let Resources class answer if a resource is a MOUNT disk, PATH disk
or ROOT disk
e.g.,
```
static bool Resources::isMountDisk(const Resource& resource);
```
These are pretty general purpose and purely for convenience. Add simple tests
to verify these methods.
## Patch 3: Autodetection for MOUNT and ROOT disks
In `Containerizer::resources()`, process each disk from the result of
`convertJSON()`.
For MOUNT disks that are empty (`isEmpty()`), detect their sizes and modify the
Resource objects.
What about the ROOT disk? If `disk:0` is in a plain string we don't do
anything. With the JSON input the operator can choose to not specify a root
disk to have it autodetected, so I guess we don't have to separately deal with
ROOT disks with an explict "zero" size. If all disks have been processed and no
ROOT disk is encountered, we auto-detect it.
How does it sound?
src/slave/containerizer/containerizer.cpp (line 162)
<https://reviews.apache.org/r/51879/#comment216607>
Call them `disks` to avoid confusion with the volumes as a Mesos concept.
src/slave/containerizer/containerizer.cpp (lines 245 - 250)
<https://reviews.apache.org/r/51879/#comment216569>
This is only for the ROOT disk, i.e., we only leave some headroom for the
system root partition.
Therefore we probably don't need this method.
- Jiang Yan Xu
On Sept. 13, 2016, 7:29 p.m., Anindya Sinha wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/51879/
> -----------------------------------------------------------
>
> (Updated Sept. 13, 2016, 7:29 p.m.)
>
>
> Review request for mesos and Jiang Yan Xu.
>
>
> Bugs: MESOS-6062
> https://issues.apache.org/jira/browse/MESOS-6062
>
>
> Repository: mesos
>
>
> Description
> -------
>
> When static resources indicate disks with a positive size, we use that
> for the disk resources on the agent. However, --resources can include
> disks with size of 0, which indicates that mesos agent determine the
> size of those disks from the host and uses that information instead.
> Note that this is not allowed for PATH disks since PATH disks can be
> carved into smaller chunks and we cannot assume that the whole
> physical disk is available to the PATH disk.
>
> With this change, JSON or textual representation for resources that
> specify scalar value of 0 would not result in an error, but those
> resources will not be accounted for until a valid size is determined
> for such resources. A scalar value of -1 in JSON or textual formats
> still results in an invalid resource.
>
>
> Diffs
> -----
>
> include/mesos/resources.hpp 7ba422d57d47777e058c682df9aa780557782423
> include/mesos/v1/resources.hpp add48c7baf8fabf5cc443d60a6c96d2902fc67de
> src/common/resources.cpp f841e91b81975a887e64a76a709708ed7946025f
> src/slave/containerizer/containerizer.hpp
> f13669d0dfc4ce3287cfe630cabd0470dc765b51
> src/slave/containerizer/containerizer.cpp
> d46882baa904fd439bffb23c324828b777228f1c
> src/tests/resources_tests.cpp f627862870279e5a778aa83e1ddcaa88c27ba1cb
> src/v1/resources.cpp 4410a8f95ef0ebe6ec7aee38cd47f6f83f863867
>
> Diff: https://reviews.apache.org/r/51879/diff/
>
>
> Testing
> -------
>
> Tests passed.
>
>
> Thanks,
>
> Anindya Sinha
>
>