// Returns any extra environment varaibles to set when launching // the Docker container (beyond the those found in CommandInfo). std::map<std::string, std::string> environment() const { if (task.isNone()) { return executorEnvironment( executor, directory, slaveId, slavePid, checkpoint, flags.recovery_timeout); } return std::map<std::string, std::string>(); }
Container(const ContainerID& id, const Option<TaskInfo>& taskInfo, const ExecutorInfo& executorInfo, const std::string& directory, const Option<std::string>& user, const SlaveID& slaveId, const process::PID<Slave>& slavePid, bool checkpoint, bool symlinked, const Flags& flags, const Option<CommandInfo>& _command, const Option<ContainerInfo>& _container, const Option<std::map<std::string, std::string>>& _environment, bool launchesExecutorContainer) : state(FETCHING), id(id), task(taskInfo), executor(executorInfo), directory(directory), user(user), slaveId(slaveId), slavePid(slavePid), checkpoint(checkpoint), symlinked(symlinked), flags(flags), launchesExecutorContainer(launchesExecutorContainer) { // NOTE: The task's resources are included in the executor's // resources in order to make sure when launching the executor // that it has non-zero resources in the event the executor was // not actually given any resources by the framework // originally. See Framework::launchExecutor in slave.cpp. We // check that this is indeed the case here to protect ourselves // from when/if this changes in the future (but it's not a // perfect check because an executor might always have a subset // of it's resources that match a task, nevertheless, it's // better than nothing). resources = executor.resources(); if (task.isSome()) { CHECK(resources.contains(task.get().resources())); } if (_command.isSome()) { command = _command.get(); } else if (task.isSome()) { command = task.get().command(); } else { command = executor.command(); } if (_container.isSome()) { container = _container.get(); } else if (task.isSome()) { container = task.get().container(); } else { container = executor.container(); } if (_environment.isSome()) { environment = _environment.get(); } else { environment = executorEnvironment( executor, directory, slaveId, slavePid, checkpoint, flags, false); } }