| 434 | |
| 435 | |
| 436 | void ResourceProviderManagerProcess::applyOperation( |
| 437 | const ApplyOperationMessage& message) |
| 438 | { |
| 439 | const Offer::Operation& operation = message.operation_info(); |
| 440 | const Option<FrameworkID> frameworkId = message.has_framework_id() |
| 441 | ? message.framework_id() |
| 442 | : Option<FrameworkID>::none(); |
| 443 | const UUID& operationUUID = message.operation_uuid(); |
| 444 | |
| 445 | Result<ResourceProviderID> resourceProviderId = |
| 446 | getResourceProviderId(operation); |
| 447 | |
| 448 | if (!resourceProviderId.isSome()) { |
| 449 | LOG(ERROR) << "Failed to get the resource provider ID of operation " |
| 450 | << "'" << operation.id() << "' (uuid: " << operationUUID |
| 451 | << ") from " |
| 452 | << (frameworkId.isSome() |
| 453 | ? "framework " + stringify(frameworkId.get()) |
| 454 | : "an operator API call") |
| 455 | << ": " |
| 456 | << (resourceProviderId.isError() ? resourceProviderId.error() |
| 457 | : "Not found"); |
| 458 | return; |
| 459 | } |
| 460 | |
| 461 | if (!resourceProviders.subscribed.contains(resourceProviderId.get())) { |
| 462 | LOG(WARNING) << "Dropping operation '" << operation.id() << "' (uuid: " |
| 463 | << operationUUID << ") from " |
| 464 | << (frameworkId.isSome() |
| 465 | ? "framework " + stringify(frameworkId.get()) |
| 466 | : "an operator API call") |
| 467 | << " because resource provider " << resourceProviderId.get() |
| 468 | << " is not subscribed"; |
| 469 | return; |
| 470 | } |
| 471 | |
| 472 | ResourceProvider* resourceProvider = |
| 473 | resourceProviders.subscribed.at(resourceProviderId.get()).get(); |
| 474 | |
| 475 | CHECK(message.resource_version_uuid().has_resource_provider_id()); |
| 476 | |
| 477 | CHECK_EQ(message.resource_version_uuid().resource_provider_id(), |
| 478 | resourceProviderId.get()) |
| 479 | << "Resource provider ID " |
| 480 | << message.resource_version_uuid().resource_provider_id() |
| 481 | << " in resource version UUID does not match that in the operation " |
| 482 | << resourceProviderId.get(); |
| 483 | |
| 484 | Event event; |
| 485 | event.set_type(Event::APPLY_OPERATION); |
| 486 | if (frameworkId.isSome()) { |
| 487 | event.mutable_apply_operation() |
| 488 | ->mutable_framework_id()->CopyFrom(frameworkId.get()); |
| 489 | } |
| 490 | event.mutable_apply_operation()->mutable_info()->CopyFrom(operation); |
| 491 | event.mutable_apply_operation() |
| 492 | ->mutable_operation_uuid()->CopyFrom(message.operation_uuid()); |
| 493 | event.mutable_apply_operation() |
nothing calls this directly
no test coverage detected