// 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; }
Task createTask( const TaskInfo& task, const TaskState& state, const FrameworkID& frameworkId) { Task t; t.mutable_framework_id()->MergeFrom(frameworkId); t.set_state(state); t.set_name(task.name()); t.mutable_task_id()->MergeFrom(task.task_id()); t.mutable_slave_id()->MergeFrom(task.slave_id()); t.mutable_resources()->MergeFrom(task.resources()); if (task.has_executor()) { t.mutable_executor_id()->CopyFrom(task.executor().executor_id()); } t.mutable_labels()->MergeFrom(task.labels()); if (task.has_discovery()) { t.mutable_discovery()->MergeFrom(task.discovery()); } return t; }
Task createTask( const TaskInfo& task, const TaskState& state, const FrameworkID& frameworkId) { Task t; t.mutable_framework_id()->CopyFrom(frameworkId); t.set_state(state); t.set_name(task.name()); t.mutable_task_id()->CopyFrom(task.task_id()); t.mutable_slave_id()->CopyFrom(task.slave_id()); t.mutable_resources()->CopyFrom(task.resources()); if (task.has_executor()) { t.mutable_executor_id()->CopyFrom(task.executor().executor_id()); } if (task.has_labels()) { t.mutable_labels()->CopyFrom(task.labels()); } if (task.has_discovery()) { t.mutable_discovery()->CopyFrom(task.discovery()); } if (task.has_container()) { t.mutable_container()->CopyFrom(task.container()); } // Copy `user` if set. if (task.has_command() && task.command().has_user()) { t.set_user(task.command().user()); } else if (task.has_executor() && task.executor().command().has_user()) { t.set_user(task.executor().command().user()); } return t; }
virtual Result<Labels> masterLaunchTaskLabelDecorator( const TaskInfo& taskInfo, const FrameworkInfo& frameworkInfo, const SlaveInfo& slaveInfo) { LOG(INFO) << "Executing 'masterLaunchTaskLabelDecorator' hook"; Labels labels; // Set one known label. Label* newLabel = labels.add_labels(); newLabel->set_key(testLabelKey); newLabel->set_value(testLabelValue); // Remove the 'testRemoveLabelKey' label which was set by the test. foreach (const Label& oldLabel, taskInfo.labels().labels()) { if (oldLabel.key() != testRemoveLabelKey) { labels.add_labels()->CopyFrom(oldLabel); } } return labels; }
// TODO(nnielsen): Split hook tests into multiple modules to avoid // interference. virtual Result<Labels> slaveRunTaskLabelDecorator( const TaskInfo& taskInfo, const ExecutorInfo& executorInfo, const FrameworkInfo& frameworkInfo, const SlaveInfo& slaveInfo) { LOG(INFO) << "Executing 'slaveRunTaskLabelDecorator' hook"; Labels labels; // Set one known label. Label* newLabel = labels.add_labels(); newLabel->set_key("baz"); newLabel->set_value("qux"); // Remove label which was set by test. foreach (const Label& oldLabel, taskInfo.labels().labels()) { if (oldLabel.key() != "foo") { labels.add_labels()->CopyFrom(oldLabel); } } return labels; }