// 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;
  }
示例#2
0
  // 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;
  }