You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2014/06/17 22:42:31 UTC
git commit: Added flags::parse() overload for ACLs protobuf.
Repository: mesos
Updated Branches:
refs/heads/master 3204dc977 -> 67b319044
Added flags::parse() overload for ACLs protobuf.
Review: https://reviews.apache.org/r/22690
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/67b31904
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/67b31904
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/67b31904
Branch: refs/heads/master
Commit: 67b3190446a3693793e0db3ff07a80c766ef35fd
Parents: 3204dc9
Author: Vinod Kone <vi...@twitter.com>
Authored: Tue Jun 17 11:44:38 2014 -0700
Committer: Vinod Kone <vi...@twitter.com>
Committed: Tue Jun 17 13:42:15 2014 -0700
----------------------------------------------------------------------
src/Makefile.am | 1 +
src/authorizer/authorizer.cpp | 10 ++-----
src/authorizer/authorizer.hpp | 2 +-
src/common/parse.hpp | 43 +++++++++++++++++++++++++++
src/common/type_utils.hpp | 8 +++++
src/master/flags.hpp | 7 ++++-
src/tests/master_authorization_tests.cpp | 8 ++---
src/tests/mesos.cpp | 2 +-
8 files changed, 66 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index 3e623cc..7ae6760 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -331,6 +331,7 @@ libmesos_no_3rdparty_la_SOURCES += \
authorizer/authorizer.hpp \
common/attributes.hpp \
common/build.hpp common/date_utils.hpp common/factory.hpp \
+ common/parse.hpp \
common/protobuf_utils.hpp \
common/http.hpp \
common/lock.hpp \
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/authorizer/authorizer.cpp
----------------------------------------------------------------------
diff --git a/src/authorizer/authorizer.cpp b/src/authorizer/authorizer.cpp
index c46b31d..40a14be 100644
--- a/src/authorizer/authorizer.cpp
+++ b/src/authorizer/authorizer.cpp
@@ -233,15 +233,9 @@ private:
};
-Try<Owned<Authorizer> > Authorizer::create(const JSON::Object& acls_)
+Try<Owned<Authorizer> > Authorizer::create(const ACLs& acls)
{
- // Convert ACLs from JSON to Protobuf.
- Try<ACLs> acls = protobuf::parse<ACLs>(acls_);
- if (acls.isError()) {
- return Error("Invalid ACLs format: " + acls.error());
- }
-
- Try<Owned<LocalAuthorizer> > authorizer = LocalAuthorizer::create(acls.get());
+ Try<Owned<LocalAuthorizer> > authorizer = LocalAuthorizer::create(acls);
if (authorizer.isError()) {
return Error(authorizer.error());
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/authorizer/authorizer.hpp
----------------------------------------------------------------------
diff --git a/src/authorizer/authorizer.hpp b/src/authorizer/authorizer.hpp
index 43e1c3b..b7f1119 100644
--- a/src/authorizer/authorizer.hpp
+++ b/src/authorizer/authorizer.hpp
@@ -43,7 +43,7 @@ public:
virtual ~Authorizer() {}
// Attempts to create an Authorizer based on the ACLs.
- static Try<process::Owned<Authorizer> > create(const JSON::Object& acls);
+ static Try<process::Owned<Authorizer> > create(const ACLs& acls);
// Returns true if the ACL can be satisfied or false otherwise.
// A failed future indicates a transient failure and the user
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/common/parse.hpp
----------------------------------------------------------------------
diff --git a/src/common/parse.hpp b/src/common/parse.hpp
new file mode 100644
index 0000000..5b12e38
--- /dev/null
+++ b/src/common/parse.hpp
@@ -0,0 +1,43 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef __COMMON_PARSE_HPP__
+#define __COMMON_PARSE_HPP__
+
+#include <stout/error.hpp>
+#include <stout/json.hpp>
+#include <stout/protobuf.hpp>
+#include <stout/try.hpp>
+
+#include <stout/flags/parse.hpp>
+
+#include "mesos/mesos.hpp"
+
+namespace flags {
+
+template<>
+inline Try<mesos::ACLs> parse(const std::string& value)
+{
+ // Convert from string or file to JSON.
+ Try<JSON::Object> json = parse<JSON::Object>(value);
+ if (json.isError()) {
+ return Error(json.error());
+ }
+
+ // Convert from JSON to Protobuf.
+ return protobuf::parse<mesos::ACLs>(json.get());
+}
+
+} // namespace flags {
+
+#endif // __COMMON_PARSE_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/common/type_utils.hpp
----------------------------------------------------------------------
diff --git a/src/common/type_utils.hpp b/src/common/type_utils.hpp
index 784a808..27ea4d2 100644
--- a/src/common/type_utils.hpp
+++ b/src/common/type_utils.hpp
@@ -114,6 +114,14 @@ inline std::ostream& operator << (
}
+inline std::ostream& operator << (
+ std::ostream& stream,
+ const ACLs& acls)
+{
+ return stream << acls.DebugString();
+}
+
+
inline bool operator == (const FrameworkID& left, const FrameworkID& right)
{
return left.value() == right.value();
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/master/flags.hpp
----------------------------------------------------------------------
diff --git a/src/master/flags.hpp b/src/master/flags.hpp
index 780e219..7850e45 100644
--- a/src/master/flags.hpp
+++ b/src/master/flags.hpp
@@ -25,11 +25,16 @@
#include <stout/flags.hpp>
#include <stout/json.hpp>
#include <stout/option.hpp>
+#include <stout/protobuf.hpp>
+
+#include "common/parse.hpp"
#include "logging/flags.hpp"
#include "master/constants.hpp"
+#include "mesos/mesos.hpp"
+
namespace mesos {
namespace internal {
namespace master {
@@ -258,7 +263,7 @@ public:
bool authenticate_frameworks;
bool authenticate_slaves;
Option<std::string> credentials;
- Option<JSON::Object> acls;
+ Option<ACLs> acls;
};
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/tests/master_authorization_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_authorization_tests.cpp b/src/tests/master_authorization_tests.cpp
index 661d67e..478041c 100644
--- a/src/tests/master_authorization_tests.cpp
+++ b/src/tests/master_authorization_tests.cpp
@@ -77,7 +77,7 @@ TEST_F(MasterAuthorizationTest, AuthorizedTask)
acl->mutable_users()->add_values("foo");
master::Flags flags = CreateMasterFlags();
- flags.acls = JSON::Protobuf(acls);
+ flags.acls = acls;
Try<PID<Master> > master = StartMaster(flags);
ASSERT_SOME(master);
@@ -155,7 +155,7 @@ TEST_F(MasterAuthorizationTest, UnauthorizedTask)
acl->mutable_users()->add_values("foo");
master::Flags flags = CreateMasterFlags();
- flags.acls = JSON::Protobuf(acls);
+ flags.acls = acls;
Try<PID<Master> > master = StartMaster(flags);
ASSERT_SOME(master);
@@ -614,7 +614,7 @@ TEST_F(MasterAuthorizationTest, AuthorizedRole)
master::Flags flags = CreateMasterFlags();
flags.roles = "foo";
- flags.acls = JSON::Protobuf(acls);
+ flags.acls = acls;
Try<PID<Master> > master = StartMaster(flags);
ASSERT_SOME(master);
@@ -655,7 +655,7 @@ TEST_F(MasterAuthorizationTest, UnauthorizedRole)
master::Flags flags = CreateMasterFlags();
flags.roles = "foo";
- flags.acls = JSON::Protobuf(acls);
+ flags.acls = acls;
Try<PID<Master> > master = StartMaster(flags);
ASSERT_SOME(master);
http://git-wip-us.apache.org/repos/asf/mesos/blob/67b31904/src/tests/mesos.cpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.cpp b/src/tests/mesos.cpp
index 98a7c38..f197da6 100644
--- a/src/tests/mesos.cpp
+++ b/src/tests/mesos.cpp
@@ -102,7 +102,7 @@ master::Flags MesosTest::CreateMasterFlags()
flags.credentials = "file://" + path;
// Set default ACLs.
- flags.acls = JSON::Object();
+ flags.acls = ACLs();
// Use the replicated log (without ZooKeeper) by default.
flags.registry = "replicated_log";