Alexander Rojas created MESOS-3072:
--------------------------------------
Summary: Unify initialization of modularized components
Key: MESOS-3072
URL: https://issues.apache.org/jira/browse/MESOS-3072
Project: Mesos
Issue Type: Improvement
Reporter: Alexander Rojas
Some default components of Mesos, e.g. the Authorization mechanism, can be
replaced by user supplied ones through modules. The modules would be
initialized through the
[{{ModuleManager}}|https://github.com/apache/mesos/blob/98039c99b0a2e0a36a7d4c22e672ecd817923bb4/src/module/manager.cpp#L250]
class which takes care of passing the correct parameters to the modules.
On the other hand, default implementations bypass the whole modules mechanisms
for the instantiations. However, for testing reasons, components which allow
for modularization require a default constructor, which lead to the interfaces
of the module to have public overridable abstract methods which are only
necessary for the default implementation, polluting the API, e.g. the
authorizer interface looks like this:
{code}
class Authenticator
{
public:
Authenticator() {}
virtual ~Authenticator() {}
virtual Try<Nothing> initialize(const Option<Credentials>& credentials) = 0;
virtual process::Future<Option<std::string>> authenticate(
const process::UPID& pid) = 0;
};
{code}
Where the
[{{initialize(credentials)}}|https://github.com/apache/mesos/blob/b5d6dfdb680b98ed640e4d34dc6c140d70cc19c8/include/mesos/authentication/authenticator.hpp#L43]
method is only necessary to pass the parameters to the default interface.
It would be in the best interest to provide a way of instantiating the default
implementations of modularized components which doesn't require polluting the
public interfaces.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)