You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bb...@apache.org on 2019/08/24 21:23:05 UTC

[mesos] 02/03: Allowed passing resource provider infos into call validation.

This is an automated email from the ASF dual-hosted git repository.

bbannier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit 764ff9af98a2e02f21630795f1eba0d04294fabf
Author: Benjamin Bannier <bb...@apache.org>
AuthorDate: Sat Aug 24 22:38:55 2019 +0200

    Allowed passing resource provider infos into call validation.
    
    With this patch it becomes possible to take a `ResourceProviderInfo`
    into account when validating calls. While this feature is currently
    unused, we will add additional validations in a follow-up patch.
    
    Review: https://reviews.apache.org/r/71340/
---
 src/resource_provider/driver.cpp                 |  2 +-
 src/resource_provider/manager.cpp                |  2 +-
 src/resource_provider/validation.cpp             |  3 ++-
 src/resource_provider/validation.hpp             |  4 +++-
 src/tests/resource_provider_validation_tests.cpp | 16 ++++++++--------
 5 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/resource_provider/driver.cpp b/src/resource_provider/driver.cpp
index eda019c..3edf799 100644
--- a/src/resource_provider/driver.cpp
+++ b/src/resource_provider/driver.cpp
@@ -45,7 +45,7 @@ namespace {
 Option<Error> validate(const mesos::v1::resource_provider::Call& call)
 {
   return mesos::internal::resource_provider::validation::call::validate(
-      mesos::internal::devolve(call));
+      mesos::internal::devolve(call), None());
 }
 
 } // namespace {
diff --git a/src/resource_provider/manager.cpp b/src/resource_provider/manager.cpp
index ceed122..773ccd3 100644
--- a/src/resource_provider/manager.cpp
+++ b/src/resource_provider/manager.cpp
@@ -356,7 +356,7 @@ Future<http::Response> ResourceProviderManagerProcess::api(
 
         Call call = devolve(v1Call);
 
-        Option<Error> error = validate(call);
+        Option<Error> error = validate(call, None());
         if (error.isSome()) {
           return BadRequest(
               "Failed to validate resource_provider::Call: " + error->message);
diff --git a/src/resource_provider/validation.cpp b/src/resource_provider/validation.cpp
index 1f9324f..3688113 100644
--- a/src/resource_provider/validation.cpp
+++ b/src/resource_provider/validation.cpp
@@ -27,7 +27,8 @@ namespace resource_provider {
 namespace validation {
 namespace call {
 
-Option<Error> validate(const Call& call)
+Option<Error> validate(
+    const Call& call, const Option<ResourceProviderInfo>& resourceProviderInfo)
 {
   if (!call.IsInitialized()) {
     return Error("Not initialized: " + call.InitializationErrorString());
diff --git a/src/resource_provider/validation.hpp b/src/resource_provider/validation.hpp
index 0068f56..1cc3ff5 100644
--- a/src/resource_provider/validation.hpp
+++ b/src/resource_provider/validation.hpp
@@ -28,7 +28,9 @@ namespace resource_provider {
 namespace validation {
 namespace call {
 
-Option<Error> validate(const mesos::resource_provider::Call& call);
+Option<Error> validate(
+    const mesos::resource_provider::Call& call,
+    const Option<ResourceProviderInfo>& resourceProviderInfo);
 
 } // namespace call {
 } // namespace validation {
diff --git a/src/tests/resource_provider_validation_tests.cpp b/src/tests/resource_provider_validation_tests.cpp
index a998941..5ff7894 100644
--- a/src/tests/resource_provider_validation_tests.cpp
+++ b/src/tests/resource_provider_validation_tests.cpp
@@ -43,7 +43,7 @@ TEST(ResourceProviderCallValidationTest, Subscribe)
   call.set_type(Call::SUBSCRIBE);
 
   // Expecting `Call::Subscribe`.
-  Option<Error> error = call::validate(call);
+  Option<Error> error = call::validate(call, None());
   EXPECT_SOME(error);
 
   Call::Subscribe* subscribe = call.mutable_subscribe();
@@ -51,7 +51,7 @@ TEST(ResourceProviderCallValidationTest, Subscribe)
   info->set_type("org.apache.mesos.rp.test");
   info->set_name("test");
 
-  error = call::validate(call);
+  error = call::validate(call, None());
   EXPECT_NONE(error);
 }
 
@@ -62,14 +62,14 @@ TEST(ResourceProviderCallValidationTest, UpdateOperationStatus)
   call.set_type(Call::UPDATE_OPERATION_STATUS);
 
   // Expecting a resource provider ID and `Call::UpdateOperationStatus`.
-  Option<Error> error = call::validate(call);
+  Option<Error> error = call::validate(call, None());
   EXPECT_SOME(error);
 
   ResourceProviderID* id = call.mutable_resource_provider_id();
   id->set_value(id::UUID::random().toString());
 
   // Still expecting `Call::UpdateOperationStatus`.
-  error = call::validate(call);
+  error = call::validate(call, None());
   EXPECT_SOME(error);
 
   Call::UpdateOperationStatus* update =
@@ -82,7 +82,7 @@ TEST(ResourceProviderCallValidationTest, UpdateOperationStatus)
   status->mutable_operation_id()->set_value(id::UUID::random().toString());
   status->set_state(OPERATION_FINISHED);
 
-  error = call::validate(call);
+  error = call::validate(call, None());
   EXPECT_NONE(error);
 }
 
@@ -93,21 +93,21 @@ TEST(ResourceProviderCallValidationTest, UpdateState)
   call.set_type(Call::UPDATE_STATE);
 
   // Expecting a resource provider ID and `Call::UpdateState`.
-  Option<Error> error = call::validate(call);
+  Option<Error> error = call::validate(call, None());
   EXPECT_SOME(error);
 
   ResourceProviderID* id = call.mutable_resource_provider_id();
   id->set_value(id::UUID::random().toString());
 
   // Still expecting `Call::UpdateState`.
-  error = call::validate(call);
+  error = call::validate(call, None());
   EXPECT_SOME(error);
 
   Call::UpdateState* updateState = call.mutable_update_state();
   updateState->mutable_resource_version_uuid()->CopyFrom(
       protobuf::createUUID());
 
-  error = call::validate(call);
+  error = call::validate(call, None());
   EXPECT_NONE(error);
 }