| 84 | // messages to the agent when a reservation is applied. |
| 85 | template <typename To> |
| 86 | Future<Resources> getOperationMessage(To to) |
| 87 | { |
| 88 | return FUTURE_PROTOBUF(ApplyOperationMessage(), _, to) |
| 89 | .then([](const ApplyOperationMessage& message) { |
| 90 | switch (message.operation_info().type()) { |
| 91 | case Offer::Operation::UNKNOWN: |
| 92 | case Offer::Operation::LAUNCH: |
| 93 | case Offer::Operation::LAUNCH_GROUP: |
| 94 | case Offer::Operation::CREATE_DISK: |
| 95 | case Offer::Operation::DESTROY_DISK: |
| 96 | case Offer::Operation::GROW_VOLUME: |
| 97 | case Offer::Operation::SHRINK_VOLUME: |
| 98 | UNREACHABLE(); |
| 99 | case Offer::Operation::RESERVE: { |
| 100 | Resources resources = |
| 101 | message.operation_info().reserve().resources(); |
| 102 | resources.unallocate(); |
| 103 | |
| 104 | return resources; |
| 105 | } |
| 106 | case Offer::Operation::UNRESERVE: { |
| 107 | Resources resources = |
| 108 | message.operation_info().unreserve().resources(); |
| 109 | resources.unallocate(); |
| 110 | |
| 111 | return resources; |
| 112 | } |
| 113 | case Offer::Operation::CREATE: { |
| 114 | Resources resources = message.operation_info().create().volumes(); |
| 115 | resources.unallocate(); |
| 116 | |
| 117 | return resources; |
| 118 | } |
| 119 | case Offer::Operation::DESTROY: { |
| 120 | Resources resources = message.operation_info().destroy().volumes(); |
| 121 | resources.unallocate(); |
| 122 | |
| 123 | return resources; |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | UNREACHABLE(); |
| 128 | }); |
| 129 | } |
| 130 | }; |
| 131 | |
| 132 | |