[jira] [Updated] (MESOS-1905) Enable module metadata to be accessed by the user

2014-10-20 Thread John (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1905?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

John updated MESOS-1905:

Sprint:   (was: Mesosphere Q4 Sprint 1)

 Enable module metadata to be accessed by the user
 -

 Key: MESOS-1905
 URL: https://issues.apache.org/jira/browse/MESOS-1905
 Project: Mesos
  Issue Type: Improvement
  Components: modules
Reporter: Till Toenshoff
Priority: Minor

 h4. Motivation
 I would love to be able to get custom, meta-data information from a module 
 without needing to create a kind instance. 
 h4. Use Case
 When slave authentication is activated on the master, the user has to supply 
 credentials (as our current implementation demands them). Given that 
 alternative authentications will not rely on such credentials, we need a way 
 to make sure that only Authenticator's that need this information will demand 
 them from the user. I would like to prevent instantiating a kind for that 
 module as I will not make further use of that instance at that (early) point 
 - let me call this the capabilities instance. 
 Options are; (a) delete it right away or (b) hold on to it.
 a: definitely is possible but does not seem elegant to me right now.
 b: holding on onto that instance and reusing it later is not really a good 
 fit as the master will instantiate new Authenticator's per connected slave. 
 So for the first slave, I would have to use that capabilities instance and 
 for all further slave connections I would have to create new Authenticators 
 (possible but ugly as hell).
 So by extending the Module structure specialization with a {{bool 
 needsCredentials()}}, I could solve this rather neatly:
 {noformat}
 template 
 struct ModuleAuthenticator : ModuleBase
 {
   Module(
   const char* _moduleApiVersion,
   const char* _mesosVersion,
   const char* _authorName,
   const char* _authorEmail,
   const char* _description,
   bool (*_compatible)(),
   bool (*_needsCredentials)(),
   Authenticator* (*_create)())
 : ModuleBase(
 _moduleApiVersion,
 _mesosVersion,
 Authenticator,
 _authorName,
 _authorEmail,
 _description,
 _compatible),
   needsCredentials(_needsCredentials),
   create(_create)
   { }
   bool (*needsCredentials)();
   Authenticator* (*create)();
 };
 {noformat}
 Within the implementation I would simply use that function just like we are 
 using {{compatible()}} already.
 h4. Status Quo
 ModuleManager does not support returning the {{ModuleBase*}} to the user. The 
 only way for such information to be returned by a module is to instantiate it 
 and ask its implementation for it - that is, the module interface needs to 
 include a method returning such info. 
 h4. Idea
 For being able to get information on a module without an instance kind, a 
 method within the ModuleManager that looks something like this would help:
 {noformat}
 static TryModuleBase* peek(const std::string moduleName) 
 {noformat}
 h4. Discussion
 Am I possibly attempting something too hacky here - are there better 
 alternatives I missed?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (MESOS-1905) Enable module metadata to be accessed by the user

2014-10-15 Thread Till Toenshoff (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1905?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Till Toenshoff updated MESOS-1905:
--
Priority: Minor  (was: Blocker)

 Enable module metadata to be accessed by the user
 -

 Key: MESOS-1905
 URL: https://issues.apache.org/jira/browse/MESOS-1905
 Project: Mesos
  Issue Type: Improvement
  Components: modules
Reporter: Till Toenshoff
Priority: Minor

 h4. Motivation
 I would love to be able to get custom, meta-data information from a module 
 without needing to create a kind instance. 
 h4. Use Case
 When slave authentication is activated on the master, the user has to supply 
 credentials (as our current implementation demands them). Given that 
 alternative authentications will not rely on such credentials, we need a way 
 to make sure that only Authenticator's that need this information will demand 
 them from the user. I would like to prevent instantiating a kind for that 
 module as I will not make further use of that instance at that (early) point 
 - let me call this the capabilities instance. 
 Options are; (a) delete it right away or (b) hold on to it.
 a: definitely is possible but does not seem elegant to me right now.
 b: holding on onto that instance and reusing it later is not really a good 
 fit as the master will instantiate new Authenticator's per connected slave. 
 So for the first slave, I would have to use that capabilities instance and 
 for all further slave connections I would have to create new Authenticators 
 (possible but ugly as hell).
 So by extending the Module structure specialization with a {{bool 
 needsCredentials()}}, I could solve this rather neatly:
 {noformat}
 template 
 struct ModuleAuthenticator : ModuleBase
 {
   Module(
   const char* _moduleApiVersion,
   const char* _mesosVersion,
   const char* _authorName,
   const char* _authorEmail,
   const char* _description,
   bool (*_compatible)(),
   bool (*_needsCredentials)(),
   Authenticator* (*_create)())
 : ModuleBase(
 _moduleApiVersion,
 _mesosVersion,
 Authenticator,
 _authorName,
 _authorEmail,
 _description,
 _compatible),
   needsCredentials(_needsCredentials),
   create(_create)
   { }
   bool (*needsCredentials)();
   Authenticator* (*create)();
 };
 {noformat}
 Within the implementation I would simply use that function just like we are 
 using {{compatible()}} already.
 h4. Status Quo
 ModuleManager does not support returning the {{ModuleBase*}} to the user. The 
 only way for such information to be returned by a module is to instantiate it 
 and ask its implementation for it - that is, the module interface needs to 
 include a method returning such info. 
 h4. Idea
 For being able to get information on a module without an instance kind, a 
 method within the ModuleManager that looks something like this would help:
 {noformat}
 static TryModuleBase* peek(const std::string moduleName) 
 {noformat}
 h4. Discussion
 Am I possibly attempting something too hacky here - are there better 
 alternatives I missed?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)