| 424 | |
| 425 | |
| 426 | Try<process::Owned<Slave>> Slave::create( |
| 427 | MasterDetector* detector, |
| 428 | const slave::Flags& flags, |
| 429 | const Option<string>& id, |
| 430 | const Option<slave::Containerizer*>& containerizer, |
| 431 | const Option<slave::GarbageCollector*>& gc, |
| 432 | const Option<slave::TaskStatusUpdateManager*>& taskStatusUpdateManager, |
| 433 | const Option<mesos::slave::ResourceEstimator*>& resourceEstimator, |
| 434 | const Option<mesos::slave::QoSController*>& qosController, |
| 435 | const Option<mesos::SecretGenerator*>& secretGenerator, |
| 436 | const Option<Authorizer*>& providedAuthorizer, |
| 437 | const Option<PendingFutureTracker*>& futureTracker, |
| 438 | const Option<Owned<slave::CSIServer>>& csiServer, |
| 439 | bool mock) |
| 440 | { |
| 441 | process::Owned<Slave> slave(new Slave()); |
| 442 | |
| 443 | // TODO(benh): Create a work directory if using the default. |
| 444 | |
| 445 | slave->flags = flags; |
| 446 | slave->detector = detector; |
| 447 | |
| 448 | // If the garbage collector is not provided, create a default one. |
| 449 | if (gc.isNone()) { |
| 450 | slave->gc.reset(new slave::GarbageCollector(flags.work_dir)); |
| 451 | } |
| 452 | |
| 453 | // If the flag `--volume_gid_range` is specified, create a volume gid manager. |
| 454 | slave::VolumeGidManager* volumeGidManager = nullptr; |
| 455 | |
| 456 | #ifndef __WINDOWS__ |
| 457 | if (flags.volume_gid_range.isSome()) { |
| 458 | Try<slave::VolumeGidManager*> _volumeGidManager = |
| 459 | slave::VolumeGidManager::create(flags); |
| 460 | |
| 461 | if (_volumeGidManager.isError()) { |
| 462 | return Error( |
| 463 | "Failed to create volume gid manager: " + _volumeGidManager.error()); |
| 464 | } |
| 465 | |
| 466 | volumeGidManager = _volumeGidManager.get(); |
| 467 | } |
| 468 | #endif // __WINDOWS__ |
| 469 | |
| 470 | // If the future tracker is not provided, create a default one. |
| 471 | if (futureTracker.isNone()) { |
| 472 | Try<PendingFutureTracker*> _futureTracker = PendingFutureTracker::create(); |
| 473 | if (_futureTracker.isError()) { |
| 474 | return Error( |
| 475 | "Failed to create pending future tracker: " + _futureTracker.error()); |
| 476 | } |
| 477 | |
| 478 | slave->futureTracker.reset(_futureTracker.get()); |
| 479 | } |
| 480 | |
| 481 | // If the secret generator is not provided, create a default one. |
| 482 | if (secretGenerator.isNone()) { |
| 483 | SecretGenerator* _secretGenerator = nullptr; |
no test coverage detected