-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/22224/
-----------------------------------------------------------
Review request for mesos, Benjamin Hindman, Ian Downes, and Vinod Kone.
Bugs: MESOS-1446
https://issues.apache.org/jira/browse/MESOS-1446
Repository: mesos-git
Description
-------
Currently, whenever we want something to be executed in a subprocess, we create
a separate binary (e.g., mesos-fetcher, mesos-executor, mesos-usage, etc.).
This has several drawbacks:
1) Code duplication (passing arguments, main function, etc.)
2) Split logic into multiple files (not good for readability)
To solve that, I created a generic 'launcher' for 'Operation's. Users can
define their own 'Operation' and 'launch' it in a subprocess. For instance:
class CustomizedOperation : public Operation
{
public:
class Flags : public flags::FlagsBase
{
Flags();
Option<string> arg1;
Option<int> arg2;
};
protected:
virtual string name() const { return "customized_operation"; }
virtual int execute()
{
if (arg1.isNone()) { return 1; }
if (arg2.isNone()) { return 1; }
do_something(arg1.get(), arg2.get());
}
};
In your code, if you want to execute 'CustomizedOperation' in a subprocess, you
can just launch it:
CustomizedOperation operation;
operation.flags.arg1 = "arg1";
operation.flags.arg2 = "arg2";
operation.launch(flags.launcher_dir + "/mesos-launcher");
We will handle the flags passing and parsing for you under the hood.
Diffs
-----
src/Makefile.am ffde59b
src/launcher/launcher.hpp PRE-CREATION
src/launcher/launcher.cpp PRE-CREATION
src/launcher/main.cpp PRE-CREATION
src/tests/launcher_tests.cpp PRE-CREATION
Diff: https://reviews.apache.org/r/22224/diff/
Testing
-------
make check
Thanks,
Jie Yu