> On March 22, 2018, 3:43 p.m., Chun-Hung Hsiao wrote:
> > src/master/validation.cpp
> > Lines 2354 (patched)
> > <https://reviews.apache.org/r/66050/diff/3/?file=1985444#file1985444line2354>
> >
> >     Let's do the following in order.
> >     
> >     First, general validations:
> >     - `resource::validate(grow.volume())` (The check is not included in 
> > `validatePersistentVolume`)
> >     - `resource::validate(grow.addition())`
> >     - `!isPersistentVolume(grow.addition())`
> >     
> >     Second, reject RP resources:
> >     ``` 
> >     if (Resources::hasResourceProvider(grow.volume())) {
> >       return Error("Growing a volume from a resource provider is not 
> > supported");
> >     }
> >     ```
> >     
> >     Third, validations specific to agent default resources:
> >     - Validations for `grow.volume()`:
> >       1) `resource::validatePersistentVolume(grow.volume())`
> >       2) `!Resources::isShared(grow.volume())
> >       3) `checkpointedResources.contains(unallocated(grow.volume()))`
> >       4) `!unallocated(usedResources).contains(unallocated(grow.volume()))`
> >     
> >     - Validations for `grow.addition()`:
> >       1) `!Resources::hasResourceProvider(grow.addition())`
> >       2) `checkpointedResources.contains(unallocated(grow.addition()))`
> >       3) `!unallocated(usedResources).contains(unallocated(grow.addition())`
> >      
> >     Alternatively, the containment checks for `checkpointedResources` and 
> > `usedResources` could be put together if that makes the code easier to 
> > read. Also if `checkpointedResources` or `usedResources` contains RP 
> > resources, we cloud move the checks to the first section. (I think that's 
> > not the case for `checkpointedResources` but need double check.)
> >     
> >     I'm not sure if we need to check if `pendingTasks` contains the 
> > resources to be consumed. Wouldn't this be validated later when validating 
> > `LAUNCH` or `LAUNCH_GROUP`?
> >     
> >     Finally, for agent default resources, we coulde exercise `addable()` to 
> > validate if the two resources are compatible:
> >     ```
> >     Resources stripped = grow.volume();
> >     if (stripped.disk.has_source()) {
> >       stripped.mutable_disk()->clear_persistence();
> >       stripped.mutable_disk()->clear_volume();
> >     }
> >     
> >     if ((stripped + grow.addition()).size() != 1) {
> >       return Error("Incompatible resources in the 'volume' and 'addition' 
> > field");
> >     }
> >     ```

I like the `addable()` idea. I would even propose that we also create helper 
function to capture the logic of clear persistent volume info from a disk 
resource.

```
Try<Resources> backToDisk = grow.volume().clearPersistentVolume();

...
```

notes: also add: `!isEmpty(addition), !isPersistentVolume(addition)`


- Zhitao


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66050/#review199802
-----------------------------------------------------------


On March 26, 2018, 11:30 p.m., Zhitao Li wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66050/
> -----------------------------------------------------------
> 
> (Updated March 26, 2018, 11:30 p.m.)
> 
> 
> Review request for mesos, Chun-Hung Hsiao, Gaston Kleiman, and Greg Mann.
> 
> 
> Bugs: MESOS-4965
>     https://issues.apache.org/jira/browse/MESOS-4965
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> The new offer operations are implemented as non-speculative operations,
> which means they cannot be chained with previous offer operations which
> depend on results of each other.
> 
> 
> Diffs
> -----
> 
>   src/common/protobuf_utils.cpp 2acdc798200e82d14651b1edcc5f83e174477d53 
>   src/common/resources_utils.cpp 9be01c1abd48264e308960f35cc7c2ee8a367518 
>   src/master/master.cpp 20692c36c021fdae91de0b156f26fc56cf7c4f45 
>   src/master/validation.hpp 7c129ceb929596acbb64d37025e055661277e6bf 
>   src/master/validation.cpp 9254cd22e67d9aca53135701575fb0857ff6f7d6 
>   src/slave/slave.cpp e76daabad0d2d68aa42d1da809d4a23459eaaacb 
>   src/tests/mesos.hpp 01fd1c2bf21ef96dbab0769a1c1c92d7e3b60032 
>   src/tests/persistent_volume_tests.cpp 
> 924d8458e54e34a49c99593482b5908c5f7c7a48 
>   src/tests/reservation_tests.cpp 8d8e9c8390e65187269bd194bb322bbdff88e0bd 
> 
> 
> Diff: https://reviews.apache.org/r/66050/diff/6/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Zhitao Li
> 
>

Reply via email to