| 11669 | |
| 11670 | |
| 11671 | void Master::_apply( |
| 11672 | Slave* slave, |
| 11673 | Framework* framework, |
| 11674 | const Offer::Operation& operationInfo) |
| 11675 | { |
| 11676 | CHECK_NOTNULL(slave); |
| 11677 | |
| 11678 | if (slave->capabilities.resourceProvider) { |
| 11679 | Result<ResourceProviderID> resourceProviderId = |
| 11680 | getResourceProviderId(operationInfo); |
| 11681 | |
| 11682 | // This must have been validated by the caller. |
| 11683 | CHECK(!resourceProviderId.isError()); |
| 11684 | |
| 11685 | CHECK( |
| 11686 | resourceProviderId.isNone() || |
| 11687 | slave->resourceProviders.contains(resourceProviderId.get())) |
| 11688 | << "Resource provider " + stringify(resourceProviderId.get()) + |
| 11689 | " is unknown"; |
| 11690 | |
| 11691 | CHECK_SOME(slave->resourceVersion); |
| 11692 | |
| 11693 | const UUID resourceVersion = resourceProviderId.isNone() |
| 11694 | ? slave->resourceVersion.get() |
| 11695 | : slave->resourceProviders.at(resourceProviderId.get()).resourceVersion; |
| 11696 | |
| 11697 | Operation* operation = new Operation(protobuf::createOperation( |
| 11698 | operationInfo, |
| 11699 | protobuf::createOperationStatus( |
| 11700 | OPERATION_PENDING, |
| 11701 | operationInfo.has_id() |
| 11702 | ? operationInfo.id() |
| 11703 | : Option<OperationID>::none(), |
| 11704 | None(), |
| 11705 | None(), |
| 11706 | None(), |
| 11707 | slave->id, |
| 11708 | resourceProviderId.isSome() |
| 11709 | ? Some(resourceProviderId.get()) |
| 11710 | : Option<ResourceProviderID>::none()), |
| 11711 | framework != nullptr ? framework->id() : Option<FrameworkID>::none(), |
| 11712 | slave->id)); |
| 11713 | |
| 11714 | addOperation(framework, slave, operation); |
| 11715 | |
| 11716 | if (protobuf::isSpeculativeOperation(operation->info())) { |
| 11717 | Offer::Operation strippedOperationInfo = operation->info(); |
| 11718 | protobuf::stripAllocationInfo(&strippedOperationInfo); |
| 11719 | |
| 11720 | Try<vector<ResourceConversion>> conversions = |
| 11721 | getResourceConversions(strippedOperationInfo); |
| 11722 | |
| 11723 | CHECK_SOME(conversions); |
| 11724 | |
| 11725 | slave->apply(conversions.get()); |
| 11726 | } |
| 11727 | |
| 11728 | ApplyOperationMessage message; |
nothing calls this directly
no test coverage detected