Repository: mesos
Updated Branches:
  refs/heads/master f9a80a067 -> 9e208293b


Added constructors for ObjectApprover::Object.

Added new constructors and updated all places where
ObjectApprover::Objects are constructed to use new
constructors.

Review: https://reviews.apache.org/r/60279/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/15656be2
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/15656be2
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/15656be2

Branch: refs/heads/master
Commit: 15656be2f65cc4eeaf053b47133ca0bd43d5c166
Parents: f9a80a0
Author: Quinn Leng <quinn.leng....@gmail.com>
Authored: Thu Jul 13 17:43:59 2017 -0700
Committer: Greg Mann <gregorywm...@gmail.com>
Committed: Thu Jul 13 20:41:24 2017 -0700

----------------------------------------------------------------------
 include/mesos/authorizer/authorizer.hpp | 112 +++++++++++++++++++++++++++
 src/common/http.cpp                     |  36 +++------
 src/master/http.cpp                     |  23 ++----
 src/slave/http.cpp                      |  68 +++++++---------
 4 files changed, 157 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/15656be2/include/mesos/authorizer/authorizer.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/authorizer/authorizer.hpp 
b/include/mesos/authorizer/authorizer.hpp
index 95cbcf3..40790f5 100644
--- a/include/mesos/authorizer/authorizer.hpp
+++ b/include/mesos/authorizer/authorizer.hpp
@@ -58,6 +58,118 @@ public:
         container_id(nullptr),
         machine_id(nullptr) {}
 
+    Object(const std::string& _value)
+      : value(&_value),
+        framework_info(nullptr),
+        task(nullptr),
+        task_info(nullptr),
+        executor_info(nullptr),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(nullptr),
+        machine_id(nullptr) {}
+
+    Object(const MachineID& _machine_id)
+      : value(nullptr),
+        framework_info(nullptr),
+        task(nullptr),
+        task_info(nullptr),
+        executor_info(nullptr),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(nullptr),
+        machine_id(&_machine_id) {}
+
+    Object(const FrameworkInfo& _framework_info)
+      : value(nullptr),
+        framework_info(&_framework_info),
+        task(nullptr),
+        task_info(nullptr),
+        executor_info(nullptr),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(nullptr),
+        machine_id(nullptr) {}
+
+    Object(const ExecutorInfo& _executor_info,
+        const FrameworkInfo& _framework_info)
+      : value(nullptr),
+        framework_info(&_framework_info),
+        task(nullptr),
+        task_info(nullptr),
+        executor_info(&_executor_info),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(nullptr),
+        machine_id(nullptr) {}
+
+    Object(const TaskInfo& _task_info, const FrameworkInfo& _framework_info)
+      : value(nullptr),
+        framework_info(&_framework_info),
+        task(nullptr),
+        task_info(&_task_info),
+        executor_info(nullptr),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(nullptr),
+        machine_id(nullptr) {}
+
+    Object(const Task& _task, const FrameworkInfo& _framework_info)
+      : value(nullptr),
+        framework_info(&_framework_info),
+        task(&_task),
+        task_info(nullptr),
+        executor_info(nullptr),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(nullptr),
+        machine_id(nullptr) {}
+
+    Object(
+        const ExecutorInfo& _executor_info,
+        const FrameworkInfo& _framework_info,
+        const CommandInfo& _command_info,
+        const ContainerID& _container_id)
+      : value(nullptr),
+        framework_info(&_framework_info),
+        task(nullptr),
+        task_info(nullptr),
+        executor_info(&_executor_info),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(&_command_info),
+        container_id(&_container_id),
+        machine_id(nullptr) {}
+
+    Object(
+        const ExecutorInfo& _executor_info,
+        const FrameworkInfo& _framework_info,
+        const ContainerID& _container_id)
+      : value(nullptr),
+        framework_info(&_framework_info),
+        task(nullptr),
+        task_info(nullptr),
+        executor_info(&_executor_info),
+        quota_info(nullptr),
+        weight_info(nullptr),
+        resource(nullptr),
+        command_info(nullptr),
+        container_id(&_container_id),
+        machine_id(nullptr) {}
+
     Object(const authorization::Object& object)
       : value(object.has_value() ? &object.value() : nullptr),
         framework_info(

http://git-wip-us.apache.org/repos/asf/mesos/blob/15656be2/src/common/http.cpp
----------------------------------------------------------------------
diff --git a/src/common/http.cpp b/src/common/http.cpp
index 7dce4cd..a9c2a4a 100644
--- a/src/common/http.cpp
+++ b/src/common/http.cpp
@@ -847,10 +847,8 @@ bool approveViewFrameworkInfo(
     const Owned<ObjectApprover>& frameworksApprover,
     const FrameworkInfo& frameworkInfo)
 {
-  ObjectApprover::Object object;
-  object.framework_info = &frameworkInfo;
-
-  Try<bool> approved = frameworksApprover->approved(object);
+  Try<bool> approved =
+    frameworksApprover->approved(ObjectApprover::Object(frameworkInfo));
   if (approved.isError()) {
     LOG(WARNING) << "Error during FrameworkInfo authorization: "
                  << approved.error();
@@ -866,11 +864,8 @@ bool approveViewExecutorInfo(
     const ExecutorInfo& executorInfo,
     const FrameworkInfo& frameworkInfo)
 {
-  ObjectApprover::Object object;
-  object.executor_info = &executorInfo;
-  object.framework_info = &frameworkInfo;
-
-  Try<bool> approved = executorsApprover->approved(object);
+  Try<bool> approved = executorsApprover->approved(
+      ObjectApprover::Object(executorInfo, frameworkInfo));
   if (approved.isError()) {
     LOG(WARNING) << "Error during ExecutorInfo authorization: "
                  << approved.error();
@@ -886,11 +881,8 @@ bool approveViewTaskInfo(
     const TaskInfo& taskInfo,
     const FrameworkInfo& frameworkInfo)
 {
-  ObjectApprover::Object object;
-  object.task_info = &taskInfo;
-  object.framework_info = &frameworkInfo;
-
-  Try<bool> approved = tasksApprover->approved(object);
+  Try<bool> approved =
+    tasksApprover->approved(ObjectApprover::Object(taskInfo, frameworkInfo));
   if (approved.isError()) {
     LOG(WARNING) << "Error during TaskInfo authorization: " << 
approved.error();
     // TODO(joerg84): Consider exposing these errors to the caller.
@@ -905,11 +897,8 @@ bool approveViewTask(
     const Task& task,
     const FrameworkInfo& frameworkInfo)
 {
-  ObjectApprover::Object object;
-  object.task = &task;
-  object.framework_info = &frameworkInfo;
-
-  Try<bool> approved = tasksApprover->approved(object);
+  Try<bool> approved =
+    tasksApprover->approved(ObjectApprover::Object(task, frameworkInfo));
   if (approved.isError()) {
     LOG(WARNING) << "Error during Task authorization: " << approved.error();
     // TODO(joerg84): Consider exposing these errors to the caller.
@@ -922,9 +911,7 @@ bool approveViewTask(
 bool approveViewFlags(
     const Owned<ObjectApprover>& flagsApprover)
 {
-  ObjectApprover::Object object;
-
-  Try<bool> approved = flagsApprover->approved(object);
+  Try<bool> approved = flagsApprover->approved(ObjectApprover::Object());
   if (approved.isError()) {
     LOG(WARNING) << "Error during Flags authorization: " << approved.error();
     // TODO(joerg84): Consider exposing these errors to the caller.
@@ -980,10 +967,7 @@ bool approveViewRole(
     const Owned<ObjectApprover>& rolesApprover,
     const string& role)
 {
-  ObjectApprover::Object object;
-  object.value = &role;
-
-  Try<bool> approved = rolesApprover->approved(object);
+  Try<bool> approved = rolesApprover->approved(ObjectApprover::Object(role));
   if (approved.isError()) {
     LOG(WARNING) << "Error during Roles authorization: " << approved.error();
     // TODO(joerg84): Consider exposing these errors to the caller.

http://git-wip-us.apache.org/repos/asf/mesos/blob/15656be2/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 948aa11..4ec275f 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -4239,10 +4239,8 @@ mesos::maintenance::Schedule 
Master::Http::_getMaintenanceSchedule(
     mesos::maintenance::Window window_;
 
     foreach (const MachineID& machine_id, window.machine_ids()) {
-      ObjectApprover::Object object;
-      object.machine_id = &machine_id;
-
-      Try<bool> approved = approver->approved(object);
+      Try<bool> approved =
+        approver->approved(ObjectApprover::Object(machine_id));
 
       if (approved.isError()) {
         LOG(WARNING) << "Error during MachineID authorization: "
@@ -4306,10 +4304,7 @@ Future<Response> 
Master::Http::__updateMaintenanceSchedule(
 {
   foreach (const mesos::maintenance::Window& window, schedule.windows()) {
     foreach (const MachineID& machine, window.machine_ids()) {
-      ObjectApprover::Object object;
-      object.machine_id = &machine;
-
-      Try<bool> approved = approver->approved(object);
+      Try<bool> approved = approver->approved(ObjectApprover::Object(machine));
 
       if (approved.isError()) {
         return InternalServerError("Authorization error: " + approved.error());
@@ -4548,9 +4543,7 @@ Future<Response> Master::Http::_startMaintenance(
             "' is not in DRAINING mode and cannot be brought down");
     }
 
-    ObjectApprover::Object object;
-    object.machine_id = &id;
-    Try<bool> approved = approver->approved(object);
+    Try<bool> approved = approver->approved(ObjectApprover::Object(id));
 
     if (approved.isError()) {
       return InternalServerError("Authorization error: " + approved.error());
@@ -4730,9 +4723,7 @@ Future<Response> Master::Http::_stopMaintenance(
             "' is not in DOWN mode and cannot be brought up");
     }
 
-    ObjectApprover::Object object;
-    object.machine_id = &id;
-    Try<bool> approved = approver->approved(object);
+    Try<bool> approved = approver->approved(ObjectApprover::Object(id));
 
     if (approved.isError()) {
       return InternalServerError("Authorization error: " + approved.error());
@@ -4905,9 +4896,7 @@ Future<mesos::maintenance::ClusterStatus> 
Master::Http::_getMaintenanceStatus(
         const MachineID& id,
         const Machine& machine,
         master->machines) {
-      ObjectApprover::Object object;
-      object.machine_id = &id;
-      Try<bool> approved = approver->approved(object);
+      Try<bool> approved = approver->approved(ObjectApprover::Object(id));
 
       if (approved.isError()) {
         LOG(WARNING) << "Error during MachineID authorization: "

http://git-wip-us.apache.org/repos/asf/mesos/blob/15656be2/src/slave/http.cpp
----------------------------------------------------------------------
diff --git a/src/slave/http.cpp b/src/slave/http.cpp
index 3070b3b..60640e5 100644
--- a/src/slave/http.cpp
+++ b/src/slave/http.cpp
@@ -2129,9 +2129,7 @@ Future<JSON::Array> Http::__containers(
       Try<bool> authorized = true;
 
       if (approver.isSome()) {
-        ObjectApprover::Object object;
-        object.executor_info = &info;
-        object.framework_info = &(framework->info);
+        ObjectApprover::Object object(info, framework->info);
 
         authorized = approver.get()->approved(object);
 
@@ -2332,13 +2330,12 @@ Future<Response> Http::_launchNestedContainer(
   Framework* framework = slave->getFramework(executor->frameworkId);
   CHECK_NOTNULL(framework);
 
-  ObjectApprover::Object object;
-  object.executor_info = &(executor->info);
-  object.framework_info = &(framework->info);
-  object.command_info = &(commandInfo);
-  object.container_id = &(containerId);
-
-  Try<bool> approved = approver.get()->approved(object);
+  Try<bool> approved = approver.get()->approved(
+      ObjectApprover::Object(
+          executor->info,
+          framework->info,
+          commandInfo,
+          containerId));
 
   if (approved.isError()) {
     return Failure(approved.error());
@@ -2435,12 +2432,11 @@ Future<Response> Http::waitNestedContainer(
       Framework* framework = slave->getFramework(executor->frameworkId);
       CHECK_NOTNULL(framework);
 
-      ObjectApprover::Object object;
-      object.executor_info = &(executor->info);
-      object.framework_info = &(framework->info);
-      object.container_id = &(containerId);
-
-      Try<bool> approved = waitApprover.get()->approved(object);
+      Try<bool> approved = waitApprover.get()->approved(
+          ObjectApprover::Object(
+              executor->info,
+              framework->info,
+              containerId));
 
       if (approved.isError()) {
         return Failure(approved.error());
@@ -2510,12 +2506,11 @@ Future<Response> Http::killNestedContainer(
       Framework* framework = slave->getFramework(executor->frameworkId);
       CHECK_NOTNULL(framework);
 
-      ObjectApprover::Object object;
-      object.executor_info = &(executor->info);
-      object.framework_info = &(framework->info);
-      object.container_id = &(containerId);
-
-      Try<bool> approved = killApprover.get()->approved(object);
+      Try<bool> approved = killApprover.get()->approved(
+          ObjectApprover::Object(
+              executor->info,
+              framework->info,
+              containerId));
 
       if (approved.isError()) {
         return Failure(approved.error());
@@ -2570,12 +2565,11 @@ Future<Response> Http::removeNestedContainer(
       Framework* framework = slave->getFramework(executor->frameworkId);
       CHECK_NOTNULL(framework);
 
-      ObjectApprover::Object object;
-      object.executor_info = &(executor->info);
-      object.framework_info = &(framework->info);
-      object.container_id = &(containerId);
-
-      Try<bool> approved = removeApprover.get()->approved(object);
+      Try<bool> approved = removeApprover.get()->approved(
+          ObjectApprover::Object(
+              executor->info,
+              framework->info,
+              containerId));
 
       if (approved.isError()) {
         return Failure(approved.error());
@@ -2711,11 +2705,8 @@ Future<Response> Http::attachContainerInput(
       Framework* framework = slave->getFramework(executor->frameworkId);
       CHECK_NOTNULL(framework);
 
-      ObjectApprover::Object object;
-      object.executor_info = &(executor->info);
-      object.framework_info = &(framework->info);
-
-      Try<bool> approved = attachInputApprover.get()->approved(object);
+      Try<bool> approved = attachInputApprover.get()->approved(
+          ObjectApprover::Object(executor->info, framework->info));
 
       if (approved.isError()) {
         return Failure(approved.error());
@@ -3026,12 +3017,11 @@ Future<Response> Http::attachContainerOutput(
       Framework* framework = slave->getFramework(executor->frameworkId);
       CHECK_NOTNULL(framework);
 
-      ObjectApprover::Object object;
-      object.executor_info = &(executor->info);
-      object.framework_info = &(framework->info);
-      object.container_id = &(containerId);
-
-      Try<bool> approved = attachOutputApprover.get()->approved(object);
+      Try<bool> approved = attachOutputApprover.get()->approved(
+          ObjectApprover::Object(
+              executor->info,
+              framework->info,
+              containerId));
 
       if (approved.isError()) {
         return Failure(approved.error());

Reply via email to