You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ka...@apache.org on 2016/04/07 00:48:32 UTC
[02/11] mesos git commit: Added support for contender and detector
modules.
Added support for contender and detector modules.
Review: https://reviews.apache.org/r/44289/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/cbbc8f0b
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/cbbc8f0b
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/cbbc8f0b
Branch: refs/heads/master
Commit: cbbc8f0ba622903fc0ee16f8fb9d587de067c4b3
Parents: 9c3a8a5
Author: Anurag Singh <an...@gmail.com>
Authored: Wed Apr 6 15:08:44 2016 -0400
Committer: Kapil Arya <ka...@mesosphere.io>
Committed: Wed Apr 6 18:36:18 2016 -0400
----------------------------------------------------------------------
include/mesos/module/contender.hpp | 64 ++++++++++++++++++++++
include/mesos/module/detector.hpp | 64 ++++++++++++++++++++++
src/Makefile.am | 20 ++++++-
src/examples/test_master_contender_module.cpp | 43 +++++++++++++++
src/examples/test_master_detector_module.cpp | 43 +++++++++++++++
src/local/local.cpp | 2 +
src/master/contender/zookeeper.cpp | 4 ++
src/master/detector/zookeeper.cpp | 4 ++
src/module/manager.cpp | 2 +
src/tests/module.cpp | 52 ++++++++++++++++++
src/tests/module.hpp | 2 +
11 files changed, 298 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/include/mesos/module/contender.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/module/contender.hpp b/include/mesos/module/contender.hpp
new file mode 100644
index 0000000..f58c9d7
--- /dev/null
+++ b/include/mesos/module/contender.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_CONTENDER_HPP__
+#define __MESOS_MODULE_CONTENDER_HPP__
+
+#include <mesos/mesos.hpp>
+#include <mesos/module.hpp>
+
+#include <mesos/master/contender.hpp>
+
+namespace mesos {
+namespace modules {
+
+template <>
+inline const char* kind<mesos::master::contender::MasterContender>()
+{
+ return "MasterContender";
+}
+
+
+template <>
+struct Module<mesos::master::contender::MasterContender> : ModuleBase
+{
+ Module(
+ const char* _moduleApiVersion,
+ const char* _mesosVersion,
+ const char* _authorName,
+ const char* _authorEmail,
+ const char* _description,
+ bool (*_compatible)(),
+ mesos::master::contender::MasterContender*
+ (*_create)(const Parameters& parameters))
+ : ModuleBase(
+ _moduleApiVersion,
+ _mesosVersion,
+ mesos::modules::kind<mesos::master::contender::MasterContender>(),
+ _authorName,
+ _authorEmail,
+ _description,
+ _compatible),
+ create(_create) {}
+
+ mesos::master::contender::MasterContender* (*create)(
+ const Parameters& parameters);
+};
+
+} // namespace modules {
+} // namespace mesos {
+
+#endif // __MESOS_MODULE_CONTENDER_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/include/mesos/module/detector.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/module/detector.hpp b/include/mesos/module/detector.hpp
new file mode 100644
index 0000000..184bf4b
--- /dev/null
+++ b/include/mesos/module/detector.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_DETECTOR_HPP__
+#define __MESOS_MODULE_DETECTOR_HPP__
+
+#include <mesos/mesos.hpp>
+#include <mesos/module.hpp>
+
+#include <mesos/master/detector.hpp>
+
+namespace mesos {
+namespace modules {
+
+template <>
+inline const char* kind<mesos::master::detector::MasterDetector>()
+{
+ return "MasterDetector";
+}
+
+
+template <>
+struct Module<mesos::master::detector::MasterDetector> : ModuleBase
+{
+ Module(
+ const char* _moduleApiVersion,
+ const char* _mesosVersion,
+ const char* _authorName,
+ const char* _authorEmail,
+ const char* _description,
+ bool (*_compatible)(),
+ mesos::master::detector::MasterDetector*
+ (*_create)(const Parameters& parameters))
+ : ModuleBase(
+ _moduleApiVersion,
+ _mesosVersion,
+ mesos::modules::kind<mesos::master::detector::MasterDetector>(),
+ _authorName,
+ _authorEmail,
+ _description,
+ _compatible),
+ create(_create) {}
+
+ mesos::master::detector::MasterDetector* (*create)(
+ const Parameters& parameters);
+};
+
+} // namespace modules {
+} // namespace mesos {
+
+#endif // __MESOS_MODULE_DETECTOR_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index 973302e..71c4308 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -475,7 +475,9 @@ masterdir = $(pkgincludedir)/master
master_HEADERS = \
$(top_srcdir)/include/mesos/master/allocator.hpp \
- $(top_srcdir)/include/mesos/master/allocator.proto
+ $(top_srcdir)/include/mesos/master/allocator.proto \
+ $(top_srcdir)/include/mesos/master/contender.hpp \
+ $(top_srcdir)/include/mesos/master/detector.hpp
nodist_master_HEADERS = \
../include/mesos/master/allocator.pb.h
@@ -495,7 +497,9 @@ module_HEADERS = \
$(top_srcdir)/include/mesos/module/module.hpp \
$(top_srcdir)/include/mesos/module/module.proto \
$(top_srcdir)/include/mesos/module/qos_controller.hpp \
- $(top_srcdir)/include/mesos/module/resource_estimator.hpp
+ $(top_srcdir)/include/mesos/module/resource_estimator.hpp \
+ $(top_srcdir)/include/mesos/module/contender.hpp \
+ $(top_srcdir)/include/mesos/module/detector.hpp
nodist_module_HEADERS = \
../include/mesos/module/module.pb.h
@@ -1818,6 +1822,18 @@ libtestcontainer_logger_la_SOURCES = \
libtestcontainer_logger_la_CPPFLAGS = $(MESOS_CPPFLAGS)
libtestcontainer_logger_la_LDFLAGS = $(MESOS_TEST_MODULE_LDFLAGS)
+# Library containing the test contender module.
+noinst_LTLIBRARIES += libtestmastercontender.la
+libtestmastercontender_la_SOURCES = examples/test_master_contender_module.cpp
+libtestmastercontender_la_CPPFLAGS = $(MESOS_CPPFLAGS)
+libtestmastercontender_la_LDFLAGS = $(MESOS_TEST_MODULE_LDFLAGS)
+
+# Library containing the test detector module.
+noinst_LTLIBRARIES += libtestmasterdetector.la
+libtestmasterdetector_la_SOURCES = examples/test_master_detector_module.cpp
+libtestmasterdetector_la_CPPFLAGS = $(MESOS_CPPFLAGS)
+libtestmasterdetector_la_LDFLAGS = $(MESOS_TEST_MODULE_LDFLAGS)
+
# Library containing test Hook module.
libtesthook_la_SOURCES = examples/test_hook_module.cpp
libtesthook_la_CPPFLAGS = $(MESOS_CPPFLAGS)
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/examples/test_master_contender_module.cpp
----------------------------------------------------------------------
diff --git a/src/examples/test_master_contender_module.cpp b/src/examples/test_master_contender_module.cpp
new file mode 100644
index 0000000..d50d9d8
--- /dev/null
+++ b/src/examples/test_master_contender_module.cpp
@@ -0,0 +1,43 @@
+// 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.
+
+#include <mesos/mesos.hpp>
+#include <mesos/module.hpp>
+
+#include <mesos/master/contender.hpp>
+
+#include <mesos/module/contender.hpp>
+
+#include <stout/try.hpp>
+
+#include "master/contender/standalone.hpp"
+
+using namespace mesos;
+using namespace mesos::master;
+using namespace mesos::master::contender;
+
+// Declares a MasterContender module named
+// 'org_apache_mesos_TestMasterContender'.
+mesos::modules::Module<MasterContender> org_apache_mesos_TestMasterContender(
+ MESOS_MODULE_API_VERSION,
+ MESOS_VERSION,
+ "Apache Mesos",
+ "modules@mesos.apache.org",
+ "Test MasterContender module.",
+ NULL,
+ [](const Parameters& parameters) -> MasterContender* {
+ return new StandaloneMasterContender();
+ });
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/examples/test_master_detector_module.cpp
----------------------------------------------------------------------
diff --git a/src/examples/test_master_detector_module.cpp b/src/examples/test_master_detector_module.cpp
new file mode 100644
index 0000000..ff362db
--- /dev/null
+++ b/src/examples/test_master_detector_module.cpp
@@ -0,0 +1,43 @@
+// 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.
+
+#include <mesos/mesos.hpp>
+#include <mesos/module.hpp>
+
+#include <mesos/master/detector.hpp>
+
+#include <mesos/module/detector.hpp>
+
+#include <stout/try.hpp>
+
+#include "master/detector/standalone.hpp"
+
+using namespace mesos;
+using namespace mesos::master;
+using namespace mesos::master::detector;
+
+// Declares a MasterDetector module named
+// 'org_apache_mesos_TestMasterDetector'.
+mesos::modules::Module<MasterDetector> org_apache_mesos_TestMasterDetector(
+ MESOS_MODULE_API_VERSION,
+ MESOS_VERSION,
+ "Apache Mesos",
+ "modules@mesos.apache.org",
+ "Test MasterDetector module.",
+ NULL,
+ [](const Parameters& parameters) -> MasterDetector* {
+ return new StandaloneMasterDetector();
+ });
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/local/local.cpp
----------------------------------------------------------------------
diff --git a/src/local/local.cpp b/src/local/local.cpp
index 5165b33..df72ac5 100644
--- a/src/local/local.cpp
+++ b/src/local/local.cpp
@@ -27,6 +27,8 @@
#include <mesos/module/anonymous.hpp>
#include <mesos/module/authorizer.hpp>
+#include <mesos/module/contender.hpp>
+#include <mesos/module/detector.hpp>
#include <mesos/slave/resource_estimator.hpp>
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/master/contender/zookeeper.cpp
----------------------------------------------------------------------
diff --git a/src/master/contender/zookeeper.cpp b/src/master/contender/zookeeper.cpp
index 59bca91..847c62e 100644
--- a/src/master/contender/zookeeper.cpp
+++ b/src/master/contender/zookeeper.cpp
@@ -16,6 +16,8 @@
#include <mesos/master/contender.hpp>
+#include <mesos/module/contender.hpp>
+
#include <process/defer.hpp>
#include <process/id.hpp>
#include <process/process.hpp>
@@ -26,6 +28,8 @@
#include "master/constants.hpp"
#include "master/master.hpp"
+#include "module/manager.hpp"
+
#include "zookeeper/contender.hpp"
#include "zookeeper/detector.hpp"
#include "zookeeper/group.hpp"
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/master/detector/zookeeper.cpp
----------------------------------------------------------------------
diff --git a/src/master/detector/zookeeper.cpp b/src/master/detector/zookeeper.cpp
index 8f226b5..519a102 100644
--- a/src/master/detector/zookeeper.cpp
+++ b/src/master/detector/zookeeper.cpp
@@ -19,6 +19,8 @@
#include <mesos/master/detector.hpp>
+#include <mesos/module/detector.hpp>
+
#include <process/defer.hpp>
#include <process/dispatch.hpp>
#include <process/future.hpp>
@@ -41,6 +43,8 @@
#include "messages/messages.hpp"
+#include "module/manager.hpp"
+
#include "zookeeper/detector.hpp"
#include "zookeeper/group.hpp"
#include "zookeeper/url.hpp"
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/module/manager.cpp
----------------------------------------------------------------------
diff --git a/src/module/manager.cpp b/src/module/manager.cpp
index 7850fd3..9f88ec3 100644
--- a/src/module/manager.cpp
+++ b/src/module/manager.cpp
@@ -73,6 +73,8 @@ void ModuleManager::initialize()
kindToVersion["Hook"] = MESOS_VERSION;
kindToVersion["HttpAuthenticator"] = MESOS_VERSION;
kindToVersion["Isolator"] = MESOS_VERSION;
+ kindToVersion["MasterContender"] = MESOS_VERSION;
+ kindToVersion["MasterDetector"] = MESOS_VERSION;
kindToVersion["QoSController"] = MESOS_VERSION;
kindToVersion["ResourceEstimator"] = MESOS_VERSION;
kindToVersion["TestModule"] = MESOS_VERSION;
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/tests/module.cpp
----------------------------------------------------------------------
diff --git a/src/tests/module.cpp b/src/tests/module.cpp
index 8cc305c..4b24048 100644
--- a/src/tests/module.cpp
+++ b/src/tests/module.cpp
@@ -222,6 +222,52 @@ static void addHttpAuthenticatorModules(Modules* modules)
}
+static void addMasterContenderModules(Modules* modules)
+{
+ CHECK_NOTNULL(modules);
+
+ const string libraryPath = path::join(
+ tests::flags.build_dir,
+ "src",
+ ".libs",
+ os::libraries::expandName("testmastercontender"));
+
+ // Now add our test anonymous module.
+ Modules::Library* library = modules->add_libraries();
+ library->set_file(libraryPath);
+
+ // To add a new module from this library, create a new ModuleID enum
+ // and tie it with a module name.
+ addModule(
+ library,
+ TestMasterContender,
+ "org_apache_mesos_TestMasterContender");
+}
+
+
+static void addMasterDetectorModules(Modules* modules)
+{
+ CHECK_NOTNULL(modules);
+
+ const string libraryPath = path::join(
+ tests::flags.build_dir,
+ "src",
+ ".libs",
+ os::libraries::expandName("testmasterdetector"));
+
+ // Now add our test anonymous module.
+ Modules::Library* library = modules->add_libraries();
+ library->set_file(libraryPath);
+
+ // To add a new module from this library, create a new ModuleID enum
+ // and tie it with a module name.
+ addModule(
+ library,
+ TestMasterDetector,
+ "org_apache_mesos_TestMasterDetector");
+}
+
+
Try<Nothing> initModules(const Option<Modules>& modules)
{
// First get the user provided modules.
@@ -257,6 +303,12 @@ Try<Nothing> initModules(const Option<Modules>& modules)
// Add HTTP authenticator modules from testhttpauthenticator library.
addHttpAuthenticatorModules(&mergedModules);
+ // Add MasterContender module from testmastercontender library.
+ addMasterContenderModules(&mergedModules);
+
+ // Add MasterDetector module from testmasterdetector library.
+ addMasterDetectorModules(&mergedModules);
+
return ModuleManager::load(mergedModules);
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/tests/module.hpp
----------------------------------------------------------------------
diff --git a/src/tests/module.hpp b/src/tests/module.hpp
index 4b32f29..e661d95 100644
--- a/src/tests/module.hpp
+++ b/src/tests/module.hpp
@@ -49,6 +49,8 @@ enum ModuleID
TestNoopResourceEstimator,
TestLocalAuthorizer,
TestSandboxContainerLogger,
+ TestMasterContender,
+ TestMasterDetector,
LogrotateContainerLogger,
TestHttpBasicAuthenticator
};
Re: [02/11] mesos git commit: Added support for contender and
detector modules.
Posted by Shuai Lin <li...@gmail.com>.
Hi Kapil, I created a JIRA about improving the test cpp framework to be
able to load detectors from modules, to make it easier for writing script
tests for the etcd contender/dector module I'm working on. Actually it
could benefit any contender/detector module developer. Do you think it make
sense?
https://issues.apache.org/jira/browse/MESOS-5106
On Fri, Apr 8, 2016 at 12:40 AM, Kapil Arya <ka...@mesosphere.io> wrote:
> Already posted a RR https://reviews.apache.org/r/45876/ :)
>
> On Thu, Apr 7, 2016 at 12:29 PM, James Peach <jo...@gmail.com> wrote:
>
> >
> > > On Apr 6, 2016, at 3:48 PM, kapil@apache.org wrote:
> > >
> > > Added support for contender and detector modules.
> > >
> > >
> > >
> >
> http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/tests/module.cpp
> > > ----------------------------------------------------------------------
> > > diff --git a/src/tests/module.cpp b/src/tests/module.cpp
> > > index 8cc305c..4b24048 100644
> > > --- a/src/tests/module.cpp
> > > +++ b/src/tests/module.cpp
> > > @@ -222,6 +222,52 @@ static void addHttpAuthenticatorModules(Modules*
> > modules)
> > > }
> > >
> > >
> > > +static void addMasterContenderModules(Modules* modules)
> > > +{
> > > + CHECK_NOTNULL(modules);
> > > +
> > > + const string libraryPath = path::join(
> > > + tests::flags.build_dir,
> > > + "src",
> > > + ".libs",
> > > + os::libraries::expandName("testmastercontender"));
> >
> > mesos::internal::tests::getModulePath("testmastercontender");
> >
> >
>
Re: [02/11] mesos git commit: Added support for contender and
detector modules.
Posted by Kapil Arya <ka...@mesosphere.io>.
Already posted a RR https://reviews.apache.org/r/45876/ :)
On Thu, Apr 7, 2016 at 12:29 PM, James Peach <jo...@gmail.com> wrote:
>
> > On Apr 6, 2016, at 3:48 PM, kapil@apache.org wrote:
> >
> > Added support for contender and detector modules.
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/tests/module.cpp
> > ----------------------------------------------------------------------
> > diff --git a/src/tests/module.cpp b/src/tests/module.cpp
> > index 8cc305c..4b24048 100644
> > --- a/src/tests/module.cpp
> > +++ b/src/tests/module.cpp
> > @@ -222,6 +222,52 @@ static void addHttpAuthenticatorModules(Modules*
> modules)
> > }
> >
> >
> > +static void addMasterContenderModules(Modules* modules)
> > +{
> > + CHECK_NOTNULL(modules);
> > +
> > + const string libraryPath = path::join(
> > + tests::flags.build_dir,
> > + "src",
> > + ".libs",
> > + os::libraries::expandName("testmastercontender"));
>
> mesos::internal::tests::getModulePath("testmastercontender");
>
>
Re: [02/11] mesos git commit: Added support for contender and detector modules.
Posted by James Peach <jo...@gmail.com>.
> On Apr 6, 2016, at 3:48 PM, kapil@apache.org wrote:
>
> Added support for contender and detector modules.
>
>
> http://git-wip-us.apache.org/repos/asf/mesos/blob/cbbc8f0b/src/tests/module.cpp
> ----------------------------------------------------------------------
> diff --git a/src/tests/module.cpp b/src/tests/module.cpp
> index 8cc305c..4b24048 100644
> --- a/src/tests/module.cpp
> +++ b/src/tests/module.cpp
> @@ -222,6 +222,52 @@ static void addHttpAuthenticatorModules(Modules* modules)
> }
>
>
> +static void addMasterContenderModules(Modules* modules)
> +{
> + CHECK_NOTNULL(modules);
> +
> + const string libraryPath = path::join(
> + tests::flags.build_dir,
> + "src",
> + ".libs",
> + os::libraries::expandName("testmastercontender"));
mesos::internal::tests::getModulePath("testmastercontender");