Hi Dariia, Allocator modules was first added to the master May 14th (git sha 614efe18cf3c7b02a2f3c8269c8eb76cbbe4ddd4), which version of the source are you looking into?
You should be able to configure your allocator module as usual ( https://github.com/apache/mesos/blob/master/docs/modules.md) and select it through the new --allocator flag. Let us know if it still doesn't work/make sense. Cheers, Niklas On 25 May 2015 at 04:18, Dariia Zhyrova <[email protected]> wrote: > Hello, > > I need to write custom Allocation module, but I don't see a possibility to > load it dynamically using --modules command line argument. > This is the allocation module creation in master/main: > > allocator::Allocator* allocator = new > allocator::HierarchicalDRFAllocator(); > > (so it is just hardcoded) > Other modules are loaded dynamically like this: > > if (flags.modules.isSome()) { > Try<Nothing> result = ModuleManager::load(flags.modules.get()); > if (result.isError()) { > EXIT(1) << "Error loading modules: " << result.error(); > } > } > ... > // Create anonymous modules. > foreach (const string& name, ModuleManager::find<Anonymous>()) { > Try<Anonymous*> create = ModuleManager::create<Anonymous>(name); > if (create.isError()) { > EXIT(1) << "Failed to create anonymous module named '" << name << > "'"; > } > ... > Authenticator* authenticator; > // TODO(tillt): Allow multiple authenticators to be loaded and enable > // the authenticatee to select the appropriate one. See MESOS-1939. > if (authenticatorNames[0] == DEFAULT_AUTHENTICATOR) { > LOG(INFO) << "Using default CRAM-MD5 authenticator"; > authenticator = new cram_md5::CRAMMD5Authenticator(); > } else { > Try<Authenticator*> module = > modules::ModuleManager::create<Authenticator>(authenticatorNames[0]); > if (module.isError()) { > EXIT(1) << "Could not create authenticator module '" > << authenticatorNames[0] << "': " << module.error(); > } > ... > if (ModuleManager::contains<Isolator>(type)) { > Try<Isolator*> isolator = ModuleManager::create<Isolator>(type); > if (isolator.isError()) { > return Error( > "Could not create isolator " + type + ": " + isolator.error()); > } > > This is a list of supported modules which can be loaded dynamically: > kindToVersion["Anonymous"] = MESOS_VERSION; > kindToVersion["Authenticatee"] = MESOS_VERSION; > kindToVersion["Authenticator"] = MESOS_VERSION; > kindToVersion["Hook"] = MESOS_VERSION; > kindToVersion["Isolator"] = MESOS_VERSION; > kindToVersion["TestModule"] = MESOS_VERSION; > > If allocation module is absent here, it will not pass such check: > > Try<Nothing> ModuleManager::verifyModule( > const string& moduleName, > const ModuleBase* moduleBase) > { > ... > if (!kindToVersion.contains(moduleBase->kind)) { > return Error("Unknown module kind: " + stringify(moduleBase->kind)); > } > ... > } > > Mesos documentation also does not mention Allocation module as dynamically > loadable: http://mesos.apache.org/documentation/latest/modules/ > > Could you please help me, is there a possibility to use custom allocation > module with Mesos? > > Best regards, > Dariia >
