This is an automated email from the ASF dual-hosted git repository. chhsiao pushed a commit to branch 1.7.x in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 79ed75719e98ba4e58803c2f64ccbbe6ac52b3f1 Author: Chun-Hung Hsiao <[email protected]> AuthorDate: Thu Feb 28 21:23:13 2019 -0800 Changed the `getResourceProviderId` helper to take a `Resources`. Review: https://reviews.apache.org/r/70080 --- src/common/resources_utils.cpp | 27 ++++++++++++--------------- src/common/resources_utils.hpp | 11 +++++------ src/master/master.cpp | 3 ++- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/common/resources_utils.cpp b/src/common/resources_utils.cpp index 3b4fcd6..3786bcf 100644 --- a/src/common/resources_utils.cpp +++ b/src/common/resources_utils.cpp @@ -334,34 +334,31 @@ Result<ResourceProviderID> getResourceProviderId( } -Result<ResourceProviderID> getResourceProviderId( - const ResourceConversion& conversion) +Result<ResourceProviderID> getResourceProviderId(const Resources& resources) { - if (conversion.consumed.empty()) { - return Error("Could not determine resource provider"); + if (resources.empty()) { + return Error("Cannot determine resource provider for empty resources"); } - const Resource& consumed = *conversion.consumed.begin(); - + const Resource resource = *resources.begin(); const Option<ResourceProviderID> resourceProviderId = - consumed.has_provider_id() - ? consumed.provider_id() - : Option<ResourceProviderID>::none(); - + resource.has_provider_id() ? resource.provider_id() + : Option<ResourceProviderID>::none(); - foreach (const Resource& resource, conversion.consumed) { + foreach (const Resource& resource_, resources) { const Option<ResourceProviderID> resourceProviderId_ = - resource.has_provider_id() - ? resource.provider_id() - : Option<ResourceProviderID>::none(); + resource_.has_provider_id() ? resource_.provider_id() + : Option<ResourceProviderID>::none(); + if (resourceProviderId_ != resourceProviderId) { - return Error("Conversion works on multiple resource providers"); + return Error("Resources are from multiple resource providers"); } } return resourceProviderId; } + void convertResourceFormat(Resource* resource, ResourceFormat format) { switch (format) { diff --git a/src/common/resources_utils.hpp b/src/common/resources_utils.hpp index 74cf747..42b6caf 100644 --- a/src/common/resources_utils.hpp +++ b/src/common/resources_utils.hpp @@ -50,7 +50,7 @@ Try<Resources> applyCheckpointedResources( // Returns the resource provider ID associated with the given -// operation. Returns None() if the operation is for agent default +// operation. Returns None if the operation is for agent default // resources. We assume the given operation is validated. Therefore, // the specified operation should not contain resources from more than // one resource provider. @@ -58,12 +58,11 @@ Result<ResourceProviderID> getResourceProviderId( const Offer::Operation& operation); -// Returns the ID of the resource provider affected by a resource -// conversion. Returns None() if the conversion is on agent default -// resources. We assume a single conversion only being applied on -// resources from a single resource provider. +// Returns the resource provider ID associated with the given resources, None if +// the given resources are agent default resources, or Error if the given +// resources are from more than one resource providers. Result<ResourceProviderID> getResourceProviderId( - const ResourceConversion& conversion); + const Resources& resources); // Returns the resource conversions from the given offer operation. diff --git a/src/master/master.cpp b/src/master/master.cpp index a6bc23f..3733d5a 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -12538,7 +12538,8 @@ void Slave::apply(const vector<ResourceConversion>& conversions) // Also apply the conversion to the explicitly maintained resource // provider resources. foreach (const ResourceConversion& conversion, conversions) { - Result<ResourceProviderID> providerId = getResourceProviderId(conversion); + Result<ResourceProviderID> providerId = + getResourceProviderId(conversion.consumed); if (providerId.isNone()) { continue;
