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 2017/03/13 15:46:31 UTC
[5/6] mesos git commit: Added the SecretGenerator module interface.
Added the SecretGenerator module interface.
This interface will be used by agents to create credentials for the
default executor.
Review: https://reviews.apache.org/r/56757/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/686733dd
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/686733dd
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/686733dd
Branch: refs/heads/master
Commit: 686733dd7b97b2d0623eabbb49242d4900baa523
Parents: b4a1603
Author: Jan Schlicht <ja...@mesosphere.io>
Authored: Mon Mar 13 16:46:09 2017 +0100
Committer: Vinod Kone <vi...@gmail.com>
Committed: Mon Mar 13 16:46:09 2017 +0100
----------------------------------------------------------------------
.../mesos/authentication/secret_generator.hpp | 49 +++++++++++++++
include/mesos/module/secret_generator.hpp | 64 ++++++++++++++++++++
src/Makefile.am | 4 +-
3 files changed, 116 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/686733dd/include/mesos/authentication/secret_generator.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/authentication/secret_generator.hpp b/include/mesos/authentication/secret_generator.hpp
new file mode 100644
index 0000000..f2fb0e7
--- /dev/null
+++ b/include/mesos/authentication/secret_generator.hpp
@@ -0,0 +1,49 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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 __MESOS_AUTHENTICATION_SECRET_GENERATOR_HPP__
+#define __MESOS_AUTHENTICATION_SECRET_GENERATOR_HPP__
+
+#include <mesos/mesos.hpp>
+
+#include <process/future.hpp>
+#include <process/http.hpp>
+
+namespace mesos {
+namespace http {
+namespace authentication {
+
+/**
+ * The SecretGenerator interface represents a mechanism to create a secret
+ * from a principal. The secret is meant to contain a token (for example,
+ * an HTTP 'Authorization' header) that can be used to authenticate. If
+ * used that way, an authenticator will yield the same principal that
+ * was passed to the `generate` method of this module.
+ */
+class SecretGenerator
+{
+public:
+ virtual ~SecretGenerator() {}
+
+ virtual process::Future<Secret> generate(
+ const process::http::authentication::Principal& principal) = 0;
+};
+
+} // namespace authentication {
+} // namespace http {
+} // namespace mesos {
+
+#endif // __MESOS_AUTHENTICATION_SECRET_GENERATOR_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/686733dd/include/mesos/module/secret_generator.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/module/secret_generator.hpp b/include/mesos/module/secret_generator.hpp
new file mode 100644
index 0000000..c8b7d8c
--- /dev/null
+++ b/include/mesos/module/secret_generator.hpp
@@ -0,0 +1,64 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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 __MESOS_MODULE_SECRET_GENERATOR_HPP__
+#define __MESOS_MODULE_SECRET_GENERATOR_HPP__
+
+#include <mesos/mesos.hpp>
+#include <mesos/module.hpp>
+
+#include <mesos/authentication/secret_generator.hpp>
+
+namespace mesos {
+namespace modules {
+
+template <>
+inline const char* kind<mesos::http::authentication::SecretGenerator>()
+{
+ return "SecretGenerator";
+}
+
+
+template <>
+struct Module<mesos::http::authentication::SecretGenerator> : ModuleBase
+{
+ Module(
+ const char* _moduleApiVersion,
+ const char* _mesosVersion,
+ const char* _authorName,
+ const char* _authorEmail,
+ const char* _description,
+ bool (*_compatible)(),
+ mesos::http::authentication::SecretGenerator* (*_create)(
+ const Parameters& parameters))
+ : ModuleBase(
+ _moduleApiVersion,
+ _mesosVersion,
+ mesos::modules::kind<mesos::http::authentication::SecretGenerator>(),
+ _authorName,
+ _authorEmail,
+ _description,
+ _compatible),
+ create(_create) {}
+
+ mesos::http::authentication::SecretGenerator* (*create)(
+ const Parameters& parameters);
+};
+
+} // namespace modules {
+} // namespace mesos {
+
+#endif // __MESOS_MODULE_SECRET_GENERATOR_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/686733dd/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index bb917c5..9be578b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -560,6 +560,7 @@ authentication_HEADERS = \
$(top_srcdir)/include/mesos/authentication/authentication.hpp \
$(top_srcdir)/include/mesos/authentication/authentication.proto \
$(top_srcdir)/include/mesos/authentication/authenticator.hpp \
+ $(top_srcdir)/include/mesos/authentication/secret_generator.hpp \
$(top_srcdir)/include/mesos/authentication/http/basic_authenticator_factory.hpp
nodist_authentication_HEADERS = \
@@ -653,7 +654,8 @@ module_HEADERS = \
$(top_srcdir)/include/mesos/module/qos_controller.hpp \
$(top_srcdir)/include/mesos/module/resource_estimator.hpp \
$(top_srcdir)/include/mesos/module/contender.hpp \
- $(top_srcdir)/include/mesos/module/detector.hpp
+ $(top_srcdir)/include/mesos/module/detector.hpp \
+ $(top_srcdir)/include/mesos/module/secret_generator.hpp
nodist_module_HEADERS = \
../include/mesos/module/hook.pb.h \