You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2016/01/24 06:03:21 UTC

mesos git commit: Moved ExecutorInfo and Option TaskInfo into ContainerConfig.

Repository: mesos
Updated Branches:
  refs/heads/master 9ca66cab1 -> 2c9136209


Moved ExecutorInfo and Option TaskInfo into ContainerConfig.

Review: https://reviews.apache.org/r/42690/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/2c913620
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/2c913620
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/2c913620

Branch: refs/heads/master
Commit: 2c913620934951324de74ee7bf0a7a9a43910a2d
Parents: 9ca66ca
Author: Gilbert Song <so...@gmail.com>
Authored: Sat Jan 23 19:33:43 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Sat Jan 23 21:03:03 2016 -0800

----------------------------------------------------------------------
 include/mesos/slave/isolator.hpp                |  1 -
 include/mesos/slave/isolator.proto              | 13 +++++----
 src/slave/containerizer/containerizer.cpp       |  1 -
 src/slave/containerizer/mesos/containerizer.cpp | 16 ++++++++---
 src/slave/containerizer/mesos/containerizer.hpp |  2 ++
 src/slave/containerizer/mesos/isolator.cpp      |  2 --
 src/slave/containerizer/mesos/isolator.hpp      |  2 --
 .../mesos/isolators/cgroups/cpushare.cpp        |  3 +--
 .../mesos/isolators/cgroups/cpushare.hpp        |  1 -
 .../mesos/isolators/cgroups/mem.cpp             |  3 +--
 .../mesos/isolators/cgroups/mem.hpp             |  1 -
 .../mesos/isolators/cgroups/net_cls.cpp         |  3 +--
 .../mesos/isolators/cgroups/net_cls.hpp         |  1 -
 .../mesos/isolators/cgroups/perf_event.cpp      |  1 -
 .../mesos/isolators/cgroups/perf_event.hpp      |  1 -
 .../mesos/isolators/filesystem/linux.cpp        |  3 ++-
 .../mesos/isolators/filesystem/linux.hpp        |  1 -
 .../mesos/isolators/filesystem/posix.cpp        |  3 ++-
 .../mesos/isolators/filesystem/posix.hpp        |  1 -
 .../mesos/isolators/filesystem/shared.cpp       |  3 ++-
 .../mesos/isolators/filesystem/shared.hpp       |  1 -
 .../mesos/isolators/namespaces/pid.cpp          |  1 -
 .../mesos/isolators/namespaces/pid.hpp          |  1 -
 .../mesos/isolators/network/port_mapping.cpp    |  3 ++-
 .../mesos/isolators/network/port_mapping.hpp    |  1 -
 .../containerizer/mesos/isolators/posix.hpp     |  1 -
 .../mesos/isolators/posix/disk.cpp              |  1 -
 .../mesos/isolators/posix/disk.hpp              |  1 -
 src/tests/containerizer/isolator.hpp            |  1 -
 src/tests/containerizer/isolator_tests.cpp      | 22 +++++++--------
 .../containerizer/mesos_containerizer_tests.cpp |  8 +++---
 src/tests/containerizer/port_mapping_tests.cpp  | 28 ++++++++++----------
 32 files changed, 61 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/include/mesos/slave/isolator.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/slave/isolator.hpp b/include/mesos/slave/isolator.hpp
index c273d66..2ea1fb7 100644
--- a/include/mesos/slave/isolator.hpp
+++ b/include/mesos/slave/isolator.hpp
@@ -57,7 +57,6 @@ public:
   // ignored; only the command value is used.
   virtual process::Future<Option<ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const ContainerConfig& containerConfig) = 0;
 
   // Isolate the executor.

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/include/mesos/slave/isolator.proto
----------------------------------------------------------------------
diff --git a/include/mesos/slave/isolator.proto b/include/mesos/slave/isolator.proto
index c4b7b1f..8b7c54a 100644
--- a/include/mesos/slave/isolator.proto
+++ b/include/mesos/slave/isolator.proto
@@ -68,21 +68,24 @@ message ContainerState
  * during `prepare`.
  */
 message ContainerConfig {
-  // The root filesystem for the container.
-  optional string rootfs = 1;
+  required ExecutorInfo executorInfo = 1;
+  optional TaskInfo taskInfo = 2;
 
   // The work directory for the container in the host filesystem.
-  required string directory = 2;
+  required string directory = 3;
 
   // The user the task will be run as.
-  optional string user = 3;
+  optional string user = 4;
+
+  // The root filesystem for the container.
+  optional string rootfs = 5;
 
   // Docker v1 image manifest.
   message Docker {
     optional docker.spec.v1.ImageManifest manifest = 1;
   }
 
-  optional Docker docker = 4;
+  optional Docker docker = 7;
 
   // TODO(gilbert): Add appc image manifest.
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/containerizer.cpp b/src/slave/containerizer/containerizer.cpp
index 298acb0..fa6e279 100644
--- a/src/slave/containerizer/containerizer.cpp
+++ b/src/slave/containerizer/containerizer.cpp
@@ -355,7 +355,6 @@ map<string, string> executorEnvironment(
   return environment;
 }
 
-
 } // namespace slave {
 } // namespace internal {
 } // namespace mesos {

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 075b3ab..624cd1a 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -647,7 +647,7 @@ Future<bool> MesosContainerizerProcess::launch(
   containers_.put(containerId, Owned<Container>(container));
 
   if (!executorInfo.has_container()) {
-    return prepare(containerId, executorInfo, directory, user, None())
+    return prepare(containerId, taskInfo, executorInfo, directory, user, None())
       .then(defer(self(),
                   &Self::__launch,
                   containerId,
@@ -665,6 +665,7 @@ Future<bool> MesosContainerizerProcess::launch(
 
   if (!executorInfo.container().mesos().has_image()) {
     return _launch(containerId,
+                   taskInfo,
                    executorInfo,
                    directory,
                    user,
@@ -680,6 +681,7 @@ Future<bool> MesosContainerizerProcess::launch(
     .then(defer(PID<MesosContainerizerProcess>(this),
                 &MesosContainerizerProcess::_launch,
                 containerId,
+                taskInfo,
                 executorInfo,
                 directory,
                 user,
@@ -692,6 +694,7 @@ Future<bool> MesosContainerizerProcess::launch(
 
 Future<bool> MesosContainerizerProcess::_launch(
     const ContainerID& containerId,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,
@@ -737,6 +740,7 @@ Future<bool> MesosContainerizerProcess::_launch(
   return collect(futures)
     .then([=]() -> Future<bool> {
       return prepare(containerId,
+                     taskInfo,
                      *_executorInfo,
                      directory,
                      user,
@@ -767,18 +771,18 @@ static list<Option<ContainerLaunchInfo>> accumulate(
 static Future<list<Option<ContainerLaunchInfo>>> _prepare(
     const Owned<Isolator>& isolator,
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig,
     const list<Option<ContainerLaunchInfo>> launchInfos)
 {
   // Propagate any failure.
-  return isolator->prepare(containerId, executorInfo, containerConfig)
+  return isolator->prepare(containerId, containerConfig)
     .then(lambda::bind(&accumulate, launchInfos, lambda::_1));
 }
 
 
 Future<list<Option<ContainerLaunchInfo>>> MesosContainerizerProcess::prepare(
     const ContainerID& containerId,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,
@@ -789,6 +793,11 @@ Future<list<Option<ContainerLaunchInfo>>> MesosContainerizerProcess::prepare(
   // Construct ContainerConfig.
   ContainerConfig containerConfig;
   containerConfig.set_directory(directory);
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
+
+  if (taskInfo.isSome()) {
+    containerConfig.mutable_taskinfo()->CopyFrom(taskInfo.get());
+  }
 
   if (user.isSome()) {
     containerConfig.set_user(user.get());
@@ -809,7 +818,6 @@ Future<list<Option<ContainerLaunchInfo>>> MesosContainerizerProcess::prepare(
     f = f.then(lambda::bind(&_prepare,
                             isolator,
                             containerId,
-                            executorInfo,
                             containerConfig,
                             lambda::_1));
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.hpp b/src/slave/containerizer/mesos/containerizer.hpp
index a8177fb..811ab79 100644
--- a/src/slave/containerizer/mesos/containerizer.hpp
+++ b/src/slave/containerizer/mesos/containerizer.hpp
@@ -185,6 +185,7 @@ private:
 
   process::Future<std::list<Option<mesos::slave::ContainerLaunchInfo>>>
     prepare(const ContainerID& containerId,
+            const Option<TaskInfo>& taskInfo,
             const ExecutorInfo& executorInfo,
             const std::string& directory,
             const Option<std::string>& user,
@@ -199,6 +200,7 @@ private:
 
   process::Future<bool> _launch(
       const ContainerID& containerId,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolator.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolator.cpp b/src/slave/containerizer/mesos/isolator.cpp
index 4de9810..6d68638 100644
--- a/src/slave/containerizer/mesos/isolator.cpp
+++ b/src/slave/containerizer/mesos/isolator.cpp
@@ -59,13 +59,11 @@ Future<Nothing> MesosIsolator::recover(
 
 Future<Option<ContainerLaunchInfo>> MesosIsolator::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   return dispatch(process.get(),
                   &MesosIsolatorProcess::prepare,
                   containerId,
-                  executorInfo,
                   containerConfig);
 }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolator.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolator.hpp b/src/slave/containerizer/mesos/isolator.hpp
index 8bdccde..b3babd0 100644
--- a/src/slave/containerizer/mesos/isolator.hpp
+++ b/src/slave/containerizer/mesos/isolator.hpp
@@ -47,7 +47,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(
@@ -83,7 +82,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig) = 0;
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/cpushare.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cpushare.cpp b/src/slave/containerizer/mesos/isolators/cgroups/cpushare.cpp
index afab0b4..57168c8 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cpushare.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cpushare.cpp
@@ -246,7 +246,6 @@ Future<Nothing> CgroupsCpushareIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> CgroupsCpushareIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (infos.contains(containerId)) {
@@ -289,7 +288,7 @@ Future<Option<ContainerLaunchInfo>> CgroupsCpushareIsolatorProcess::prepare(
     }
   }
 
-  return update(containerId, executorInfo.resources())
+  return update(containerId, containerConfig.executorinfo().resources())
     .then([]() -> Future<Option<ContainerLaunchInfo>> {
       return None();
     });

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/cpushare.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cpushare.hpp b/src/slave/containerizer/mesos/isolators/cgroups/cpushare.hpp
index 9c331eb..74982a6 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cpushare.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cpushare.hpp
@@ -54,7 +54,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/mem.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/mem.cpp b/src/slave/containerizer/mesos/isolators/cgroups/mem.cpp
index bc76a0b..34aa660 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/mem.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/mem.cpp
@@ -233,7 +233,6 @@ Future<Nothing> CgroupsMemIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> CgroupsMemIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (infos.contains(containerId)) {
@@ -279,7 +278,7 @@ Future<Option<ContainerLaunchInfo>> CgroupsMemIsolatorProcess::prepare(
   oomListen(containerId);
   pressureListen(containerId);
 
-  return update(containerId, executorInfo.resources())
+  return update(containerId, containerConfig.executorinfo().resources())
     .then([]() -> Future<Option<ContainerLaunchInfo>> {
       return None();
     });

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/mem.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/mem.hpp b/src/slave/containerizer/mesos/isolators/cgroups/mem.hpp
index 944544d..b3ce6ed 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/mem.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/mem.hpp
@@ -49,7 +49,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/net_cls.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/net_cls.cpp b/src/slave/containerizer/mesos/isolators/cgroups/net_cls.cpp
index 0798de7..03a488e 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/net_cls.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/net_cls.cpp
@@ -185,7 +185,6 @@ Future<ResourceStatistics> CgroupsNetClsIsolatorProcess::usage(
 
 Future<Option<ContainerLaunchInfo>> CgroupsNetClsIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (infos.contains(containerId)) {
@@ -227,7 +226,7 @@ Future<Option<ContainerLaunchInfo>> CgroupsNetClsIsolatorProcess::prepare(
 
   infos.emplace(containerId, info);
 
-  return update(containerId, executorInfo.resources())
+  return update(containerId, containerConfig.executorinfo().resources())
     .then([]() -> Future<Option<ContainerLaunchInfo>> {
       return None();
     });

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/net_cls.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/net_cls.hpp b/src/slave/containerizer/mesos/isolators/cgroups/net_cls.hpp
index 7ce5243..b4bc521 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/net_cls.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/net_cls.hpp
@@ -47,7 +47,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/perf_event.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/perf_event.cpp b/src/slave/containerizer/mesos/isolators/cgroups/perf_event.cpp
index 5736214..5ef4ae5 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/perf_event.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/perf_event.cpp
@@ -208,7 +208,6 @@ Future<Nothing> CgroupsPerfEventIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> CgroupsPerfEventIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (infos.contains(containerId)) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/cgroups/perf_event.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/perf_event.hpp b/src/slave/containerizer/mesos/isolators/cgroups/perf_event.hpp
index a996b10..65e7318 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/perf_event.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/perf_event.hpp
@@ -45,7 +45,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp b/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
index 96aac81..24ff819 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
@@ -258,7 +258,6 @@ Future<Nothing> LinuxFilesystemIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> LinuxFilesystemIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   const string& directory = containerConfig.directory();
@@ -349,6 +348,8 @@ Future<Option<ContainerLaunchInfo>> LinuxFilesystemIsolatorProcess::prepare(
     launchInfo.set_rootfs(rootfs);
   }
 
+  const ExecutorInfo& executorInfo = containerConfig.executorinfo();
+
   // Prepare the commands that will be run in the container's mount
   // namespace right after forking the executor process. We use these
   // commands to mount those volumes specified in the container info

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/filesystem/linux.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/linux.hpp b/src/slave/containerizer/mesos/isolators/filesystem/linux.hpp
index 3acbd69..cb18126 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/linux.hpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/linux.hpp
@@ -52,7 +52,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/filesystem/posix.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/posix.cpp b/src/slave/containerizer/mesos/isolators/filesystem/posix.cpp
index b5fede8..bce5ab9 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/posix.cpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/posix.cpp
@@ -71,13 +71,14 @@ Future<Nothing> PosixFilesystemIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> PosixFilesystemIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (infos.contains(containerId)) {
     return Failure("Container has already been prepared");
   }
 
+  const ExecutorInfo& executorInfo = containerConfig.executorinfo();
+
   if (executorInfo.has_container()) {
     CHECK_EQ(executorInfo.container().type(), ContainerInfo::MESOS);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/filesystem/posix.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/posix.hpp b/src/slave/containerizer/mesos/isolators/filesystem/posix.hpp
index b36a196..c6cea98 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/posix.hpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/posix.hpp
@@ -40,7 +40,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
index c1b6e08..59ffd13 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
@@ -77,9 +77,10 @@ Future<Nothing> SharedFilesystemIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
+  const ExecutorInfo& executorInfo = containerConfig.executorinfo();
+
   if (executorInfo.has_container() &&
       executorInfo.container().type() != ContainerInfo::MESOS) {
     return Failure("Can only prepare filesystem for a MESOS container");

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/filesystem/shared.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/filesystem/shared.hpp b/src/slave/containerizer/mesos/isolators/filesystem/shared.hpp
index c3ac448..dd0481c 100644
--- a/src/slave/containerizer/mesos/isolators/filesystem/shared.hpp
+++ b/src/slave/containerizer/mesos/isolators/filesystem/shared.hpp
@@ -43,7 +43,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
index fb21e6c..5970d22 100644
--- a/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+++ b/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
@@ -154,7 +154,6 @@ Future<Nothing> NamespacesPidIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   ContainerLaunchInfo launchInfo;

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/namespaces/pid.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/namespaces/pid.hpp b/src/slave/containerizer/mesos/isolators/namespaces/pid.hpp
index e20b584..c8f389d 100644
--- a/src/slave/containerizer/mesos/isolators/namespaces/pid.hpp
+++ b/src/slave/containerizer/mesos/isolators/namespaces/pid.hpp
@@ -60,7 +60,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
index c8e5281..d5dd93d 100644
--- a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
@@ -2109,7 +2109,6 @@ PortMappingIsolatorProcess::_recover(pid_t pid)
 
 Future<Option<ContainerLaunchInfo>> PortMappingIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (unmanaged.contains(containerId)) {
@@ -2120,6 +2119,8 @@ Future<Option<ContainerLaunchInfo>> PortMappingIsolatorProcess::prepare(
     return Failure("Container has already been prepared");
   }
 
+  const ExecutorInfo& executorInfo = containerConfig.executorinfo();
+
   Resources resources(executorInfo.resources());
 
   IntervalSet<uint16_t> nonEphemeralPorts;

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/network/port_mapping.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.hpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.hpp
index ea58c42..ebf820a 100644
--- a/src/slave/containerizer/mesos/isolators/network/port_mapping.hpp
+++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.hpp
@@ -156,7 +156,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/posix.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/posix.hpp b/src/slave/containerizer/mesos/isolators/posix.hpp
index 7cdf9ed..227505a 100644
--- a/src/slave/containerizer/mesos/isolators/posix.hpp
+++ b/src/slave/containerizer/mesos/isolators/posix.hpp
@@ -63,7 +63,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig)
   {
     if (promises.contains(containerId)) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/posix/disk.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/posix/disk.cpp b/src/slave/containerizer/mesos/isolators/posix/disk.cpp
index 5d43810..23e4dcd 100644
--- a/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+++ b/src/slave/containerizer/mesos/isolators/posix/disk.cpp
@@ -105,7 +105,6 @@ Future<Nothing> PosixDiskIsolatorProcess::recover(
 
 Future<Option<ContainerLaunchInfo>> PosixDiskIsolatorProcess::prepare(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
     const ContainerConfig& containerConfig)
 {
   if (infos.contains(containerId)) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/slave/containerizer/mesos/isolators/posix/disk.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/posix/disk.hpp b/src/slave/containerizer/mesos/isolators/posix/disk.hpp
index e718a11..8e87432 100644
--- a/src/slave/containerizer/mesos/isolators/posix/disk.hpp
+++ b/src/slave/containerizer/mesos/isolators/posix/disk.hpp
@@ -82,7 +82,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig);
 
   virtual process::Future<Nothing> isolate(

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/tests/containerizer/isolator.hpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/isolator.hpp b/src/tests/containerizer/isolator.hpp
index 0f9b21a..fbe80aa 100644
--- a/src/tests/containerizer/isolator.hpp
+++ b/src/tests/containerizer/isolator.hpp
@@ -45,7 +45,6 @@ public:
 
   virtual process::Future<Option<mesos::slave::ContainerLaunchInfo>> prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const mesos::slave::ContainerConfig& containerConfig)
   {
     return launchInfo;

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/tests/containerizer/isolator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/isolator_tests.cpp b/src/tests/containerizer/isolator_tests.cpp
index 6510553..7033ac1 100644
--- a/src/tests/containerizer/isolator_tests.cpp
+++ b/src/tests/containerizer/isolator_tests.cpp
@@ -166,11 +166,11 @@ TYPED_TEST(CpuIsolatorTest, UserCpuUsage)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   AWAIT_READY(isolator.get()->prepare(
       containerId,
-      executorInfo,
       containerConfig));
 
   const string& file = path::join(dir.get(), "mesos_isolator_test_ready");
@@ -278,11 +278,11 @@ TYPED_TEST(CpuIsolatorTest, SystemCpuUsage)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   AWAIT_READY(isolator.get()->prepare(
       containerId,
-      executorInfo,
       containerConfig));
 
   const string& file = path::join(dir.get(), "mesos_isolator_test_ready");
@@ -392,11 +392,11 @@ TEST_F(RevocableCpuIsolatorTest, ROOT_CGROUPS_RevocableCpu)
   containerId.set_value(UUID::random().toString());
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(os::getcwd());
 
   AWAIT_READY(isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig));
 
   vector<string> argv{"sleep", "100"};
@@ -474,12 +474,12 @@ TEST_F(LimitedCpuIsolatorTest, ROOT_CGROUPS_CFS_Enable_Cfs)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> prepare =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(prepare);
@@ -590,12 +590,12 @@ TEST_F(LimitedCpuIsolatorTest, ROOT_CGROUPS_CFS_Big_Quota)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> prepare =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(prepare);
@@ -678,12 +678,12 @@ TEST_F(LimitedCpuIsolatorTest, ROOT_CGROUPS_Pids_and_Tids)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> prepare =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(prepare);
@@ -805,11 +805,11 @@ TYPED_TEST(MemIsolatorTest, MemUsage)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   AWAIT_READY(isolator.get()->prepare(
       containerId,
-      executorInfo,
       containerConfig));
 
   MemoryTestHelper helper;
@@ -983,11 +983,11 @@ TEST_F(PerfEventIsolatorTest, ROOT_CGROUPS_Sample)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   AWAIT_READY(isolator.get()->prepare(
       containerId,
-      executorInfo,
       containerConfig));
 
   // This first sample is likely to be empty because perf hasn't
@@ -1080,12 +1080,12 @@ TEST_F(SharedFilesystemIsolatorTest, DISABLED_ROOT_RelativeVolume)
   containerId.set_value(UUID::random().toString());
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(flags.work_dir);
 
   Future<Option<ContainerLaunchInfo> > prepare =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(prepare);
@@ -1187,12 +1187,12 @@ TEST_F(SharedFilesystemIsolatorTest, DISABLED_ROOT_AbsoluteVolume)
   containerId.set_value(UUID::random().toString());
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(flags.work_dir);
 
   Future<Option<ContainerLaunchInfo> > prepare =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(prepare);
@@ -1365,12 +1365,12 @@ TYPED_TEST(UserCgroupIsolatorTest, ROOT_CGROUPS_UserCgroup)
   containerId.set_value(UUID::random().toString());
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(os::getcwd());
   containerConfig.set_user(UNPRIVILEGED_USERNAME);
 
   AWAIT_READY(isolator.get()->prepare(
       containerId,
-      executorInfo,
       containerConfig));
 
   // Isolators don't provide a way to determine the cgroups they use

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/tests/containerizer/mesos_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/mesos_containerizer_tests.cpp b/src/tests/containerizer/mesos_containerizer_tests.cpp
index 677fcc1..a45ed1b 100644
--- a/src/tests/containerizer/mesos_containerizer_tests.cpp
+++ b/src/tests/containerizer/mesos_containerizer_tests.cpp
@@ -515,7 +515,7 @@ public:
     EXPECT_CALL(*this, cleanup(_))
       .WillRepeatedly(Return(Nothing()));
 
-    EXPECT_CALL(*this, prepare(_, _, _))
+    EXPECT_CALL(*this, prepare(_, _))
       .WillRepeatedly(Invoke(this, &MockIsolator::_prepare));
   }
 
@@ -525,16 +525,14 @@ public:
           const list<ContainerState>&,
           const hashset<ContainerID>&));
 
-  MOCK_METHOD3(
+  MOCK_METHOD2(
       prepare,
       Future<Option<ContainerLaunchInfo>>(
           const ContainerID&,
-          const ExecutorInfo&,
           const ContainerConfig&));
 
   virtual Future<Option<ContainerLaunchInfo>> _prepare(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
       const ContainerConfig& containerConfig)
   {
     return None();
@@ -645,7 +643,7 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhilePreparing)
   Promise<Option<ContainerLaunchInfo>> promise;
 
   // Simulate a long prepare from the isolator.
-  EXPECT_CALL(*isolator, prepare(_, _, _))
+  EXPECT_CALL(*isolator, prepare(_, _))
     .WillOnce(DoAll(FutureSatisfy(&prepare),
                     Return(promise.future())));
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/2c913620/src/tests/containerizer/port_mapping_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/port_mapping_tests.cpp b/src/tests/containerizer/port_mapping_tests.cpp
index fab16f6..182fe92 100644
--- a/src/tests/containerizer/port_mapping_tests.cpp
+++ b/src/tests/containerizer/port_mapping_tests.cpp
@@ -457,12 +457,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_ContainerToContainerTCP)
   ASSERT_SOME(dir1);
 
   ContainerConfig containerConfig1;
+  containerConfig1.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig1.set_directory(dir1.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo1 =
     isolator.get()->prepare(
         containerId1,
-        executorInfo,
         containerConfig1);
 
   AWAIT_READY(launchInfo1);
@@ -526,12 +526,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_ContainerToContainerTCP)
   ASSERT_SOME(dir2);
 
   ContainerConfig containerConfig2;
+  containerConfig2.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig2.set_directory(dir2.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo2 =
     isolator.get()->prepare(
         containerId2,
-        executorInfo,
         containerConfig2);
 
   AWAIT_READY(launchInfo2);
@@ -620,12 +620,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_ContainerToContainerUDP)
   ASSERT_SOME(dir1);
 
   ContainerConfig containerConfig1;
+  containerConfig1.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig1.set_directory(dir1.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo1 =
     isolator.get()->prepare(
         containerId1,
-        executorInfo,
         containerConfig1);
 
   AWAIT_READY(launchInfo1);
@@ -689,12 +689,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_ContainerToContainerUDP)
   ASSERT_SOME(dir2);
 
   ContainerConfig containerConfig2;
+  containerConfig2.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig2.set_directory(dir2.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo2 =
     isolator.get()->prepare(
         containerId2,
-        executorInfo,
         containerConfig2);
 
   AWAIT_READY(launchInfo2);
@@ -785,12 +785,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_HostToContainerUDP)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -903,12 +903,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_HostToContainerTCP)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -1029,12 +1029,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerICMPExternal)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -1116,12 +1116,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerICMPInternal)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -1206,12 +1206,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerARPExternal)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -1302,12 +1302,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_DNS)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -1394,12 +1394,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_TooManyContainers)
   ASSERT_SOME(dir1);
 
   ContainerConfig containerConfig1;
+  containerConfig1.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig1.set_directory(dir1.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo1 =
     isolator.get()->prepare(
         containerId1,
-        executorInfo,
         containerConfig1);
 
   AWAIT_READY(launchInfo1);
@@ -1447,12 +1447,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_TooManyContainers)
   ASSERT_SOME(dir2);
 
   ContainerConfig containerConfig2;
+  containerConfig2.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig2.set_directory(dir2.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo2 =
     isolator.get()->prepare(
         containerId2,
-        executorInfo,
         containerConfig2);
 
   AWAIT_FAILED(launchInfo2);
@@ -1513,12 +1513,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_SmallEgressLimit)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);
@@ -1668,12 +1668,12 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_PortMappingStatistics)
   ASSERT_SOME(dir);
 
   ContainerConfig containerConfig;
+  containerConfig.mutable_executorinfo()->CopyFrom(executorInfo);
   containerConfig.set_directory(dir.get());
 
   Future<Option<ContainerLaunchInfo>> launchInfo =
     isolator.get()->prepare(
         containerId,
-        executorInfo,
         containerConfig);
 
   AWAIT_READY(launchInfo);