| 2684 | |
| 2685 | |
| 2686 | bool contains(const Resource& left, const Resource& right) |
| 2687 | { |
| 2688 | // NOTE: This is a necessary condition for 'contains'. |
| 2689 | // 'subtractable' will verify name, role, type, ReservationInfo, |
| 2690 | // DiskInfo, SharedInfo, RevocableInfo, and ResourceProviderID |
| 2691 | // compatibility. |
| 2692 | if (!internal::subtractable(left, right)) { |
| 2693 | return false; |
| 2694 | } |
| 2695 | |
| 2696 | if (left.type() == Value::SCALAR) { |
| 2697 | return right.scalar() <= left.scalar(); |
| 2698 | } else if (left.type() == Value::RANGES) { |
| 2699 | return right.ranges() <= left.ranges(); |
| 2700 | } else if (left.type() == Value::SET) { |
| 2701 | return right.set() <= left.set(); |
| 2702 | } else { |
| 2703 | return false; |
| 2704 | } |
| 2705 | } |
| 2706 | |
| 2707 | |
| 2708 | Try<Resources> ResourceConversion::apply(const Resources& resources) const |