// In this hook, we create a temporary file and add its path to an // environment variable. Later on, this environment variable is // looked up by the removeExecutorHook to locate and delete this // file. virtual Result<Environment> slaveLaunchExecutorEnvironmentDecorator( const ExecutorInfo& executorInfo, const TaskInfo& taskInfo) { LOG(INFO) << "Executing 'slaveLaunchExecutorEnvironmentDecorator' hook"; // Find the label value for the label that was created in the // label decorator hook above. Option<string> labelValue; foreach (const Label& label, taskInfo.labels().labels()) { if (label.key() == testLabelKey) { labelValue = label.value(); CHECK_EQ(labelValue.get(), testLabelValue); } } CHECK_SOME(labelValue); // Create a temporary file. Try<string> file = os::mktemp(); CHECK_SOME(file); CHECK_SOME(os::write(file.get(), labelValue.get())); // Inject file path into command environment. Environment environment; Environment::Variable* variable = environment.add_variables(); variable->set_name(testEnvironmentVariableName); variable->set_value(file.get()); return environment; }
// In this hook, we create a new environment variable "FOO" and set // it's value to "bar". virtual Result<Environment> slaveExecutorEnvironmentDecorator( const ExecutorInfo& executorInfo) { LOG(INFO) << "Executing 'slaveExecutorEnvironmentDecorator' hook"; Environment environment; if (executorInfo.command().has_environment()) { environment.CopyFrom(executorInfo.command().environment()); } Environment::Variable* variable = environment.add_variables(); variable->set_name("FOO"); variable->set_value("bar"); return environment; }