You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/03/13 05:42:20 UTC
[1/5] mesos git commit: Validated Docker info exists when container's
type is DOCKER.
Repository: mesos
Updated Branches:
refs/heads/master 56843f3b9 -> 92e831eea
Validated Docker info exists when container's type is DOCKER.
Review: https://reviews.apache.org/r/65915/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/be2ce4c7
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/be2ce4c7
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/be2ce4c7
Branch: refs/heads/master
Commit: be2ce4c732cc9dedc38b45f9459cad5e1a130afb
Parents: 56843f3
Author: Qian Zhang <zh...@gmail.com>
Authored: Mon Mar 12 19:54:05 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Mon Mar 12 22:40:59 2018 -0700
----------------------------------------------------------------------
src/common/validation.cpp | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/be2ce4c7/src/common/validation.cpp
----------------------------------------------------------------------
diff --git a/src/common/validation.cpp b/src/common/validation.cpp
index bad9ea8..ff114d7 100644
--- a/src/common/validation.cpp
+++ b/src/common/validation.cpp
@@ -268,6 +268,13 @@ Option<Error> validateContainerInfo(const ContainerInfo& containerInfo)
}
}
+ if (containerInfo.type() == ContainerInfo::DOCKER) {
+ if (!containerInfo.has_docker()) {
+ return Error(
+ "DockerInfo 'docker' is not set for DOCKER typed ContainerInfo");
+ }
+ }
+
return None();
}
[4/5] mesos git commit: Made sure no `name` parameter exists in
container's Docker info.
Posted by gi...@apache.org.
Made sure no `name` parameter exists in container's Docker info.
Setting `name` parameter in container's Docker info will cause Docker
containerizer cannot recognize the created Docker container, see
MESOS-8497 for details. So this patch disallows that during validation
stage.
Review: https://reviews.apache.org/r/65918/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3d147f01
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3d147f01
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3d147f01
Branch: refs/heads/master
Commit: 3d147f01395c057ee9bc21cd85579a2c8f031a18
Parents: ac844a6
Author: Qian Zhang <zh...@gmail.com>
Authored: Mon Mar 12 19:54:30 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Mon Mar 12 22:41:12 2018 -0700
----------------------------------------------------------------------
src/common/validation.cpp | 11 +++++++++++
1 file changed, 11 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/3d147f01/src/common/validation.cpp
----------------------------------------------------------------------
diff --git a/src/common/validation.cpp b/src/common/validation.cpp
index ff114d7..74450df 100644
--- a/src/common/validation.cpp
+++ b/src/common/validation.cpp
@@ -273,6 +273,17 @@ Option<Error> validateContainerInfo(const ContainerInfo& containerInfo)
return Error(
"DockerInfo 'docker' is not set for DOCKER typed ContainerInfo");
}
+
+ // We do not support setting `name` parameter in Docker info because
+ // Docker containerizer has its own way to name the Docker container,
+ // otherwise Docker containerizer will not be able to recognize the
+ // created container, see MESOS-8497 for details.
+ foreach (const Parameter& parameter,
+ containerInfo.docker().parameters()) {
+ if (parameter.key() == "name") {
+ return Error("Parameter in DockerInfo must not be 'name'");
+ }
+ }
}
return None();
[5/5] mesos git commit: Added a test
`TaskValidationTest.TaskSettingDockerContainerName`.
Posted by gi...@apache.org.
Added a test `TaskValidationTest.TaskSettingDockerContainerName`.
Review: https://reviews.apache.org/r/65919/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/92e831ee
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/92e831ee
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/92e831ee
Branch: refs/heads/master
Commit: 92e831eea009f767a7040aec0c377591b72a8d11
Parents: 3d147f0
Author: Qian Zhang <zh...@gmail.com>
Authored: Mon Mar 12 19:54:36 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Mon Mar 12 22:41:18 2018 -0700
----------------------------------------------------------------------
src/tests/master_validation_tests.cpp | 56 ++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/92e831ee/src/tests/master_validation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_validation_tests.cpp b/src/tests/master_validation_tests.cpp
index 799da62..efdd44d 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -2825,6 +2825,62 @@ TEST_F(TaskValidationTest, TaskMissingDockerInfo)
driver.join();
}
+
+// This test verifies that a task that has `name` parameter set
+// in `DockerInfo` is rejected during `TaskInfo` validation.
+TEST_F(TaskValidationTest, TaskSettingDockerParameterName)
+{
+ Try<Owned<cluster::Master>> master = StartMaster();
+ ASSERT_SOME(master);
+
+ Owned<MasterDetector> detector = master.get()->createDetector();
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
+ ASSERT_SOME(slave);
+
+ MockScheduler sched;
+ MesosSchedulerDriver driver(
+ &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
+
+ EXPECT_CALL(sched, registered(&driver, _, _));
+
+ Future<vector<Offer>> offers;
+ EXPECT_CALL(sched, resourceOffers(&driver, _))
+ .WillOnce(FutureArg<1>(&offers))
+ .WillRepeatedly(Return()); // Ignore subsequent offers.
+
+ driver.start();
+
+ AWAIT_READY(offers);
+ ASSERT_FALSE(offers->empty());
+
+ Future<TaskStatus> status;
+ EXPECT_CALL(sched, statusUpdate(&driver, _))
+ .WillOnce(FutureArg<1>(&status));
+
+ // Create an invalid task that has `name` parameter set in `DockerInfo`.
+ TaskInfo task = createTask(offers.get()[0], "exit 0");
+ task.mutable_container()->set_type(ContainerInfo::DOCKER);
+ task.mutable_container()->mutable_docker()->set_image("alpine");
+
+ Parameter* parameter =
+ task.mutable_container()->mutable_docker()->add_parameters();
+
+ parameter->set_key("name");
+ parameter->set_value("test");
+
+ driver.launchTasks(offers.get()[0].id(), {task});
+
+ AWAIT_READY(status);
+ EXPECT_EQ(TASK_ERROR, status->state());
+ EXPECT_EQ(
+ "Task's `ContainerInfo` is invalid: "
+ "Parameter in DockerInfo must not be 'name'",
+ status->message());
+
+ driver.stop();
+ driver.join();
+}
+
// TODO(jieyu): Add tests for checking duplicated persistence ID
// against offered resources.
[2/5] mesos git commit: Added a test
`TaskValidationTest.TaskMissingDockerInfo`.
Posted by gi...@apache.org.
Added a test `TaskValidationTest.TaskMissingDockerInfo`.
Review: https://reviews.apache.org/r/65917/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/ac844a68
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/ac844a68
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/ac844a68
Branch: refs/heads/master
Commit: ac844a68c1947274c820d0e176795e66863d5a22
Parents: e7cb1d9
Author: Qian Zhang <zh...@gmail.com>
Authored: Mon Mar 12 19:54:21 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Mon Mar 12 22:41:05 2018 -0700
----------------------------------------------------------------------
src/tests/master_validation_tests.cpp | 50 ++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/ac844a68/src/tests/master_validation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_validation_tests.cpp b/src/tests/master_validation_tests.cpp
index 53cc3ed..799da62 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -2775,6 +2775,56 @@ TEST_F(TaskValidationTest, TaskEnvironmentInvalid)
driver.join();
}
+
+// This test verifies that a task that has `ContainerInfo` set as DOCKER
+// but has no `DockerInfo` is rejected during `TaskInfo` validation.
+TEST_F(TaskValidationTest, TaskMissingDockerInfo)
+{
+ Try<Owned<cluster::Master>> master = StartMaster();
+ ASSERT_SOME(master);
+
+ Owned<MasterDetector> detector = master.get()->createDetector();
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
+ ASSERT_SOME(slave);
+
+ MockScheduler sched;
+ MesosSchedulerDriver driver(
+ &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
+
+ EXPECT_CALL(sched, registered(&driver, _, _));
+
+ Future<vector<Offer>> offers;
+ EXPECT_CALL(sched, resourceOffers(&driver, _))
+ .WillOnce(FutureArg<1>(&offers))
+ .WillRepeatedly(Return()); // Ignore subsequent offers.
+
+ driver.start();
+
+ AWAIT_READY(offers);
+ ASSERT_FALSE(offers->empty());
+
+ Future<TaskStatus> status;
+ EXPECT_CALL(sched, statusUpdate(&driver, _))
+ .WillOnce(FutureArg<1>(&status));
+
+ // Create an invalid task that has `ContainerInfo` set
+ // as DOCKER but has no `DockerInfo`.
+ TaskInfo task = createTask(offers.get()[0], "exit 0");
+ task.mutable_container()->set_type(ContainerInfo::DOCKER);
+
+ driver.launchTasks(offers.get()[0].id(), {task});
+
+ AWAIT_READY(status);
+ EXPECT_EQ(TASK_ERROR, status->state());
+ EXPECT_EQ(
+ "Task's `ContainerInfo` is invalid: "
+ "DockerInfo 'docker' is not set for DOCKER typed ContainerInfo",
+ status->message());
+
+ driver.stop();
+ driver.join();
+}
+
// TODO(jieyu): Add tests for checking duplicated persistence ID
// against offered resources.
[3/5] mesos git commit: Set Docker info for the test
`TaskUsesDockerContainerInfo`.
Posted by gi...@apache.org.
Set Docker info for the test `TaskUsesDockerContainerInfo`.
Docker info is required when container's type is DOCKER, it is enforced
in `mesos::internal::common::validation:validateContainerInfo()`. So in
this test, we have to set Docker info to pass the validation.
Review: https://reviews.apache.org/r/65916/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/e7cb1d9b
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/e7cb1d9b
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/e7cb1d9b
Branch: refs/heads/master
Commit: e7cb1d9bd0ee040b8ab7873f0770bb4f014b7f5c
Parents: be2ce4c
Author: Qian Zhang <zh...@gmail.com>
Authored: Mon Mar 12 19:54:14 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Mon Mar 12 22:41:05 2018 -0700
----------------------------------------------------------------------
src/tests/master_validation_tests.cpp | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/e7cb1d9b/src/tests/master_validation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_validation_tests.cpp b/src/tests/master_validation_tests.cpp
index 77ec7fb..53cc3ed 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -3385,6 +3385,7 @@ TEST_F(TaskGroupValidationTest, TaskUsesDockerContainerInfo)
task1.mutable_slave_id()->MergeFrom(offer.slave_id());
task1.mutable_resources()->MergeFrom(resources);
task1.mutable_container()->set_type(ContainerInfo::DOCKER);
+ task1.mutable_container()->mutable_docker()->set_image("alpine");
// Create a valid task.
TaskInfo task2;