Repository: mesos
Updated Branches:
  refs/heads/master 0b2853d1b -> 14f80f961


Updated Isolator::prepare to return ContainerPrepareInfo.

ContainerPrepareInfo contains CommandInfo as well as Environment. While
the CommandInfo lists the commands to be run inside the containerized
context, the Environment allows the isolator to specify environment
variables for the Executor itself.

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


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

Branch: refs/heads/master
Commit: 14f80f9619c31cdcdf3562b6e012096e5f8d4028
Parents: 0b2853d
Author: Kapil Arya <[email protected]>
Authored: Mon Jul 27 17:10:40 2015 -0700
Committer: Jie Yu <[email protected]>
Committed: Mon Jul 27 17:40:44 2015 -0700

----------------------------------------------------------------------
 include/mesos/slave/isolator.hpp                |  2 +-
 include/mesos/slave/isolator.proto              | 14 ++++++
 src/slave/containerizer/isolator.cpp            |  3 +-
 src/slave/containerizer/isolator.hpp            |  4 +-
 .../isolators/cgroups/cpushare.cpp              |  5 ++-
 .../isolators/cgroups/cpushare.hpp              |  2 +-
 .../containerizer/isolators/cgroups/mem.cpp     |  5 ++-
 .../containerizer/isolators/cgroups/mem.hpp     |  2 +-
 .../isolators/cgroups/perf_event.cpp            |  3 +-
 .../isolators/cgroups/perf_event.hpp            |  2 +-
 .../isolators/filesystem/posix.cpp              |  5 ++-
 .../isolators/filesystem/posix.hpp              |  2 +-
 .../isolators/filesystem/shared.cpp             |  9 ++--
 .../isolators/filesystem/shared.hpp             |  2 +-
 .../containerizer/isolators/namespaces/pid.cpp  |  9 ++--
 .../containerizer/isolators/namespaces/pid.hpp  |  2 +-
 .../isolators/network/port_mapping.cpp          | 11 +++--
 .../isolators/network/port_mapping.hpp          |  2 +-
 src/slave/containerizer/isolators/posix.hpp     |  2 +-
 .../containerizer/isolators/posix/disk.cpp      |  3 +-
 .../containerizer/isolators/posix/disk.hpp      |  2 +-
 src/slave/containerizer/mesos/containerizer.cpp | 32 +++++++-------
 src/slave/containerizer/mesos/containerizer.hpp |  7 +--
 src/tests/containerizer/containerizer_tests.cpp | 46 ++++++++++++--------
 src/tests/containerizer/isolator.hpp            | 14 +++---
 src/tests/containerizer/isolator_tests.cpp      | 12 ++---
 src/tests/containerizer/port_mapping_tests.cpp  | 33 +++++++-------
 27 files changed, 136 insertions(+), 99 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/include/mesos/slave/isolator.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/slave/isolator.hpp b/include/mesos/slave/isolator.hpp
index 879e03e..e3befa3 100644
--- a/include/mesos/slave/isolator.hpp
+++ b/include/mesos/slave/isolator.hpp
@@ -70,7 +70,7 @@ public:
   // will be run by the Launcher.
   // TODO(idownes): Any URIs or Environment in the CommandInfo will be
   // ignored; only the command value is used.
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/include/mesos/slave/isolator.proto
----------------------------------------------------------------------
diff --git a/include/mesos/slave/isolator.proto 
b/include/mesos/slave/isolator.proto
index 07c1c1a..289125f 100644
--- a/include/mesos/slave/isolator.proto
+++ b/include/mesos/slave/isolator.proto
@@ -56,3 +56,17 @@ message ExecutorRunState
   required string directory = 4;      // Executor work directory.
   optional string rootfs = 5;         // Optional container rootfs.
 }
+
+
+/**
+ * Protobuf returned by Isolator::prepare(). The command is executed
+ * by the Launcher in the containerized context.
+ * Note: Currently, any URIs or Environment in the CommandInfo will be
+ * ignored; only the command value is used. Further, we only accept
+ * shell commands for the preparation commands.
+ */
+message ContainerPrepareInfo
+{
+  optional CommandInfo command = 1;
+  optional Environment environment = 2;
+}

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolator.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolator.cpp 
b/src/slave/containerizer/isolator.cpp
index 9d2af8b..3c1fc53 100644
--- a/src/slave/containerizer/isolator.cpp
+++ b/src/slave/containerizer/isolator.cpp
@@ -25,6 +25,7 @@ using namespace process;
 using std::string;
 using std::list;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 
@@ -63,7 +64,7 @@ Future<Nothing> MesosIsolator::recover(
 }
 
 
-Future<Option<CommandInfo>> MesosIsolator::prepare(
+Future<Option<ContainerPrepareInfo>> MesosIsolator::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolator.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolator.hpp 
b/src/slave/containerizer/isolator.hpp
index 1482b4c..2d895fc 100644
--- a/src/slave/containerizer/isolator.hpp
+++ b/src/slave/containerizer/isolator.hpp
@@ -49,7 +49,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
@@ -89,7 +89,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans) = 0;
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/cgroups/cpushare.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/cpushare.cpp 
b/src/slave/containerizer/isolators/cgroups/cpushare.cpp
index ccaf1e3..b29ccf8 100644
--- a/src/slave/containerizer/isolators/cgroups/cpushare.cpp
+++ b/src/slave/containerizer/isolators/cgroups/cpushare.cpp
@@ -47,6 +47,7 @@ using std::set;
 using std::string;
 using std::vector;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -244,7 +245,7 @@ Future<Nothing> CgroupsCpushareIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> CgroupsCpushareIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> CgroupsCpushareIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -292,7 +293,7 @@ Future<Option<CommandInfo>> 
CgroupsCpushareIsolatorProcess::prepare(
   }
 
   return update(containerId, executorInfo.resources())
-    .then([]() -> Future<Option<CommandInfo>> {
+    .then([]() -> Future<Option<ContainerPrepareInfo>> {
       return None();
     });
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/cgroups/cpushare.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/cpushare.hpp 
b/src/slave/containerizer/isolators/cgroups/cpushare.hpp
index 409a3a9..917d6d3 100644
--- a/src/slave/containerizer/isolators/cgroups/cpushare.hpp
+++ b/src/slave/containerizer/isolators/cgroups/cpushare.hpp
@@ -54,7 +54,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/cgroups/mem.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/mem.cpp 
b/src/slave/containerizer/isolators/cgroups/mem.cpp
index 70c9868..d330fc3 100644
--- a/src/slave/containerizer/isolators/cgroups/mem.cpp
+++ b/src/slave/containerizer/isolators/cgroups/mem.cpp
@@ -54,6 +54,7 @@ using std::set;
 using std::string;
 using std::vector;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -230,7 +231,7 @@ Future<Nothing> CgroupsMemIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> CgroupsMemIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> CgroupsMemIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -281,7 +282,7 @@ Future<Option<CommandInfo>> 
CgroupsMemIsolatorProcess::prepare(
   pressureListen(containerId);
 
   return update(containerId, executorInfo.resources())
-    .then([]() -> Future<Option<CommandInfo>> {
+    .then([]() -> Future<Option<ContainerPrepareInfo>> {
       return None();
     });
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/cgroups/mem.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/mem.hpp 
b/src/slave/containerizer/isolators/cgroups/mem.hpp
index d43ba6d..178d566 100644
--- a/src/slave/containerizer/isolators/cgroups/mem.hpp
+++ b/src/slave/containerizer/isolators/cgroups/mem.hpp
@@ -49,7 +49,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/cgroups/perf_event.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/perf_event.cpp 
b/src/slave/containerizer/isolators/cgroups/perf_event.cpp
index a62a4e6..c78eea9 100644
--- a/src/slave/containerizer/isolators/cgroups/perf_event.cpp
+++ b/src/slave/containerizer/isolators/cgroups/perf_event.cpp
@@ -53,6 +53,7 @@ using std::set;
 using std::string;
 using std::vector;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -216,7 +217,7 @@ Future<Nothing> CgroupsPerfEventIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> CgroupsPerfEventIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> CgroupsPerfEventIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/cgroups/perf_event.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/perf_event.hpp 
b/src/slave/containerizer/isolators/cgroups/perf_event.hpp
index 3796b30..47b2e9e 100644
--- a/src/slave/containerizer/isolators/cgroups/perf_event.hpp
+++ b/src/slave/containerizer/isolators/cgroups/perf_event.hpp
@@ -45,7 +45,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/filesystem/posix.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/filesystem/posix.cpp 
b/src/slave/containerizer/isolators/filesystem/posix.cpp
index 5e5a896..44a7ec6 100644
--- a/src/slave/containerizer/isolators/filesystem/posix.cpp
+++ b/src/slave/containerizer/isolators/filesystem/posix.cpp
@@ -32,6 +32,7 @@ using namespace process;
 using std::list;
 using std::string;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -69,7 +70,7 @@ Future<Nothing> PosixFilesystemIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> PosixFilesystemIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> PosixFilesystemIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -89,7 +90,7 @@ Future<Option<CommandInfo>> 
PosixFilesystemIsolatorProcess::prepare(
   infos.put(containerId, Owned<Info>(new Info(directory)));
 
   return update(containerId, executorInfo.resources())
-      .then([]() -> Future<Option<CommandInfo>> { return None(); });
+      .then([]() -> Future<Option<ContainerPrepareInfo>> { return None(); });
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/filesystem/posix.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/filesystem/posix.hpp 
b/src/slave/containerizer/isolators/filesystem/posix.hpp
index 2afc572..927f336 100644
--- a/src/slave/containerizer/isolators/filesystem/posix.hpp
+++ b/src/slave/containerizer/isolators/filesystem/posix.hpp
@@ -40,7 +40,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/filesystem/shared.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/filesystem/shared.cpp 
b/src/slave/containerizer/isolators/filesystem/shared.cpp
index 4694025..754a6fd 100644
--- a/src/slave/containerizer/isolators/filesystem/shared.cpp
+++ b/src/slave/containerizer/isolators/filesystem/shared.cpp
@@ -28,6 +28,7 @@ using std::list;
 using std::set;
 using std::string;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -79,7 +80,7 @@ Future<Nothing> SharedFilesystemIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> SharedFilesystemIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> SharedFilesystemIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -218,10 +219,10 @@ Future<Option<CommandInfo>> 
SharedFilesystemIsolatorProcess::prepare(
                        volume.container_path());
   }
 
-  CommandInfo command;
-  command.set_value(strings::join(" && ", commands));
+  ContainerPrepareInfo prepareInfo;
+  prepareInfo.mutable_command()->set_value(strings::join(" && ", commands));
 
-  return command;
+  return prepareInfo;
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/filesystem/shared.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/filesystem/shared.hpp 
b/src/slave/containerizer/isolators/filesystem/shared.hpp
index f6ba43a..8fba9fe 100644
--- a/src/slave/containerizer/isolators/filesystem/shared.hpp
+++ b/src/slave/containerizer/isolators/filesystem/shared.hpp
@@ -45,7 +45,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/namespaces/pid.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/namespaces/pid.cpp 
b/src/slave/containerizer/isolators/namespaces/pid.cpp
index 29be94b..8f4c13e 100644
--- a/src/slave/containerizer/isolators/namespaces/pid.cpp
+++ b/src/slave/containerizer/isolators/namespaces/pid.cpp
@@ -39,6 +39,7 @@ using std::list;
 using std::set;
 using std::string;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -158,7 +159,7 @@ Future<Nothing> NamespacesPidIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> NamespacesPidIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> NamespacesPidIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -186,10 +187,10 @@ Future<Option<CommandInfo>> 
NamespacesPidIsolatorProcess::prepare(
   commands.push_back("mount none /proc --make-private -o rec");
   commands.push_back("mount -n -t proc proc /proc -o nosuid,noexec,nodev");
 
-  CommandInfo command;
-  command.set_value(strings::join(" && ", commands));
+  ContainerPrepareInfo prepareInfo;
+  prepareInfo.mutable_command()->set_value(strings::join(" && ", commands));
 
-  return command;
+  return prepareInfo;
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/namespaces/pid.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/namespaces/pid.hpp 
b/src/slave/containerizer/isolators/namespaces/pid.hpp
index 61db386..f718fa3 100644
--- a/src/slave/containerizer/isolators/namespaces/pid.hpp
+++ b/src/slave/containerizer/isolators/namespaces/pid.hpp
@@ -62,7 +62,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/network/port_mapping.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/network/port_mapping.cpp 
b/src/slave/containerizer/isolators/network/port_mapping.cpp
index 3f35782..d7c0ef0 100644
--- a/src/slave/containerizer/isolators/network/port_mapping.cpp
+++ b/src/slave/containerizer/isolators/network/port_mapping.cpp
@@ -106,17 +106,16 @@ using std::vector;
 
 using filter::ip::PortRange;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
 
-
 // An old glibc might not have this symbol.
 #ifndef MNT_DETACH
 #define MNT_DETACH 2
 #endif
 
-
 namespace mesos {
 namespace internal {
 namespace slave {
@@ -2078,7 +2077,7 @@ PortMappingIsolatorProcess::_recover(pid_t pid)
 }
 
 
-Future<Option<CommandInfo>> PortMappingIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> PortMappingIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -2136,10 +2135,10 @@ Future<Option<CommandInfo>> 
PortMappingIsolatorProcess::prepare(
             << " for container " << containerId << " of executor "
             << executorInfo.executor_id();
 
-  CommandInfo command;
-  command.set_value(scripts(infos[containerId]));
+  ContainerPrepareInfo prepareInfo;
+  prepareInfo.mutable_command()->set_value(scripts(infos[containerId]));
 
-  return command;
+  return prepareInfo;
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/network/port_mapping.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/network/port_mapping.hpp 
b/src/slave/containerizer/isolators/network/port_mapping.hpp
index fb9ce9c..b73943a 100644
--- a/src/slave/containerizer/isolators/network/port_mapping.hpp
+++ b/src/slave/containerizer/isolators/network/port_mapping.hpp
@@ -158,7 +158,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/posix.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/posix.hpp 
b/src/slave/containerizer/isolators/posix.hpp
index 58d9911..67f2fb1 100644
--- a/src/slave/containerizer/isolators/posix.hpp
+++ b/src/slave/containerizer/isolators/posix.hpp
@@ -62,7 +62,7 @@ public:
     return Nothing();
   }
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/posix/disk.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/posix/disk.cpp 
b/src/slave/containerizer/isolators/posix/disk.cpp
index 845496c..7ef843a 100644
--- a/src/slave/containerizer/isolators/posix/disk.cpp
+++ b/src/slave/containerizer/isolators/posix/disk.cpp
@@ -55,6 +55,7 @@ using std::list;
 using std::string;
 using std::vector;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
@@ -102,7 +103,7 @@ Future<Nothing> PosixDiskIsolatorProcess::recover(
 }
 
 
-Future<Option<CommandInfo>> PosixDiskIsolatorProcess::prepare(
+Future<Option<ContainerPrepareInfo>> PosixDiskIsolatorProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/isolators/posix/disk.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/posix/disk.hpp 
b/src/slave/containerizer/isolators/posix/disk.hpp
index 86aea37..fc6cc40 100644
--- a/src/slave/containerizer/isolators/posix/disk.hpp
+++ b/src/slave/containerizer/isolators/posix/disk.hpp
@@ -82,7 +82,7 @@ public:
       const std::list<mesos::slave::ExecutorRunState>& states,
       const hashset<ContainerID>& orphans);
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp 
b/src/slave/containerizer/mesos/containerizer.cpp
index 11eedf3..ecc8659 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -87,6 +87,7 @@ using mesos::modules::ModuleManager;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
+using mesos::slave::ContainerPrepareInfo;
 
 using state::SlaveState;
 using state::FrameworkState;
@@ -714,31 +715,31 @@ Future<bool> MesosContainerizerProcess::launch(
 }
 
 
-static list<Option<CommandInfo>> accumulate(
-    list<Option<CommandInfo>> l,
-    const Option<CommandInfo>& e)
+static list<Option<ContainerPrepareInfo>> accumulate(
+    list<Option<ContainerPrepareInfo>> l,
+    const Option<ContainerPrepareInfo>& e)
 {
   l.push_back(e);
   return l;
 }
 
 
-static Future<list<Option<CommandInfo>>> _prepare(
+static Future<list<Option<ContainerPrepareInfo>>> _prepare(
     const Owned<Isolator>& isolator,
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& rootfs,
     const Option<string>& user,
-    const list<Option<CommandInfo>> commands)
+    const list<Option<ContainerPrepareInfo>> prepareInfos)
 {
   // Propagate any failure.
   return isolator->prepare(containerId, executorInfo, directory, rootfs, user)
-    .then(lambda::bind(&accumulate, commands, lambda::_1));
+    .then(lambda::bind(&accumulate, prepareInfos, lambda::_1));
 }
 
 
-Future<list<Option<CommandInfo>>> MesosContainerizerProcess::prepare(
+Future<list<Option<ContainerPrepareInfo>>> MesosContainerizerProcess::prepare(
     const ContainerID& containerId,
     const ExecutorInfo& executorInfo,
     const string& directory,
@@ -749,7 +750,8 @@ Future<list<Option<CommandInfo>>> 
MesosContainerizerProcess::prepare(
   // We prepare the isolators sequentially according to their ordering
   // to permit basic dependency specification, e.g., preparing a
   // filesystem isolator before other isolators.
-  Future<list<Option<CommandInfo>>> f = list<Option<CommandInfo>>();
+  Future<list<Option<ContainerPrepareInfo>>> f =
+    list<Option<ContainerPrepareInfo>>();
 
   foreach (const Owned<Isolator>& isolator, isolators) {
     // Chain together preparing each isolator.
@@ -763,7 +765,7 @@ Future<list<Option<CommandInfo>>> 
MesosContainerizerProcess::prepare(
                             lambda::_1));
   }
 
-  containers_[containerId]->preparations = f;
+  containers_[containerId]->prepareInfos = f;
 
   return f;
 }
@@ -798,7 +800,7 @@ Future<bool> MesosContainerizerProcess::_launch(
     const SlaveID& slaveId,
     const PID<Slave>& slavePid,
     bool checkpoint,
-    const list<Option<CommandInfo>>& commands)
+    const list<Option<ContainerPrepareInfo>>& prepareInfos)
 {
   if (!containers_.contains(containerId)) {
     return Failure("Container has been destroyed");
@@ -846,13 +848,13 @@ Future<bool> MesosContainerizerProcess::_launch(
   launchFlags.pipe_read = pipes[0];
   launchFlags.pipe_write = pipes[1];
 
-  // Prepare the additional preparation commands.
+  // Prepare the additional prepareInfo commands.
   // TODO(jieyu): Use JSON::Array once we have generic parse support.
   JSON::Object object;
   JSON::Array array;
-  foreach (const Option<CommandInfo>& command, commands) {
-    if (command.isSome()) {
-      array.values.push_back(JSON::Protobuf(command.get()));
+  foreach (const Option<ContainerPrepareInfo>& prepareInfo, prepareInfos) {
+    if (prepareInfo.isSome() && prepareInfo.get().has_command()) {
+      array.values.push_back(JSON::Protobuf(prepareInfo.get().command()));
     }
   }
   object.values["commands"] = array;
@@ -1127,7 +1129,7 @@ void MesosContainerizerProcess::destroy(
     // We need to wait for the isolators to finish preparing to prevent
     // a race that the destroy method calls isolators' cleanup before
     // it starts preparing.
-    container->preparations
+    container->prepareInfos
       .onAny(defer(
           self(),
           &Self::___destroy,

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/slave/containerizer/mesos/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.hpp 
b/src/slave/containerizer/mesos/containerizer.hpp
index 5155362..0cd22eb 100644
--- a/src/slave/containerizer/mesos/containerizer.hpp
+++ b/src/slave/containerizer/mesos/containerizer.hpp
@@ -197,7 +197,7 @@ private:
       bool checkpoint,
       const std::string& rootfs);
 
-  process::Future<std::list<Option<CommandInfo>>> prepare(
+  process::Future<std::list<Option<mesos::slave::ContainerPrepareInfo>>> 
prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
@@ -218,7 +218,7 @@ private:
       const SlaveID& slaveId,
       const process::PID<Slave>& slavePid,
       bool checkpoint,
-      const std::list<Option<CommandInfo>>& scripts);
+      const std::list<Option<mesos::slave::ContainerPrepareInfo>>& scripts);
 
   process::Future<bool> isolate(
       const ContainerID& containerId,
@@ -302,7 +302,8 @@ private:
     // We keep track of the future that is waiting for all the
     // isolators' prepare futures, so that destroy will only start
     // calling cleanup after all isolators has finished preparing.
-    process::Future<std::list<Option<CommandInfo>>> preparations;
+    process::Future<std::list<Option<mesos::slave::ContainerPrepareInfo>>>
+      prepareInfos;
 
     // We keep track of the future that is waiting for all the
     // isolators' isolate futures, so that destroy will only start

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/tests/containerizer/containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/containerizer_tests.cpp 
b/src/tests/containerizer/containerizer_tests.cpp
index a44b6e8..cbafa42 100644
--- a/src/tests/containerizer/containerizer_tests.cpp
+++ b/src/tests/containerizer/containerizer_tests.cpp
@@ -66,7 +66,7 @@ using mesos::internal::slave::state::SlaveState;
 using mesos::slave::ExecutorLimitation;
 using mesos::slave::ExecutorRunState;
 using mesos::slave::Isolator;
-using mesos::slave::IsolatorProcess;
+using mesos::slave::ContainerPrepareInfo;
 
 using std::list;
 using std::map;
@@ -90,11 +90,11 @@ public:
   // 'prepare' command(s).
   Try<MesosContainerizer*> CreateContainerizer(
       Fetcher* fetcher,
-      const vector<Option<CommandInfo>>& prepares)
+      const vector<Option<ContainerPrepareInfo>>& prepares)
   {
     vector<Owned<Isolator>> isolators;
 
-    foreach (const Option<CommandInfo>& prepare, prepares) {
+    foreach (const Option<ContainerPrepareInfo>& prepare, prepares) {
       Try<Isolator*> isolator = TestIsolatorProcess::create(prepare);
       if (isolator.isError()) {
         return Error(isolator.error());
@@ -122,9 +122,9 @@ public:
 
   Try<MesosContainerizer*> CreateContainerizer(
       Fetcher* fetcher,
-      const Option<CommandInfo>& prepare)
+      const Option<ContainerPrepareInfo>& prepare)
   {
-    vector<Option<CommandInfo>> prepares;
+    vector<Option<ContainerPrepareInfo>> prepares;
     prepares.push_back(prepare);
 
     return CreateContainerizer(fetcher, prepares);
@@ -140,10 +140,12 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, 
ScriptSucceeds)
 
   Fetcher fetcher;
 
+  ContainerPrepareInfo prepareInfo;
+  prepareInfo.mutable_command()->set_value("touch " + file);
+
   Try<MesosContainerizer*> containerizer = CreateContainerizer(
       &fetcher,
-      CREATE_COMMAND_INFO("touch " + file));
-
+      prepareInfo);
   CHECK_SOME(containerizer);
 
   ContainerID containerId;
@@ -189,10 +191,12 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, 
ScriptFails)
 
   Fetcher fetcher;
 
+  ContainerPrepareInfo prepareInfo;
+  prepareInfo.mutable_command()->set_value("touch " + file + " && exit 1");
+
   Try<MesosContainerizer*> containerizer = CreateContainerizer(
       &fetcher,
-      CREATE_COMMAND_INFO("touch " + file + " && exit 1"));
-
+      prepareInfo);
   CHECK_SOME(containerizer);
 
   ContainerID containerId;
@@ -239,14 +243,18 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, 
MultipleScripts)
   string file1 = path::join(directory, "child.script.executed.1");
   string file2 = path::join(directory, "child.script.executed.2");
 
-  vector<Option<CommandInfo>> prepares;
+  vector<Option<ContainerPrepareInfo>> prepares;
 
-  // This isolator prepare command one will succeed if called first,
-  // otherwise it won't get run.
-  prepares.push_back(CREATE_COMMAND_INFO("touch " + file1 + " && exit 0"));
+  // This isolator prepare command one will succeed if called first, otherwise
+  // it won't get run.
+  ContainerPrepareInfo prepare1;
+  prepare1.mutable_command()->set_value("touch " + file1 + " && exit 0");
+  prepares.push_back(prepare1);
 
   // This will fail, either first or after the successful command.
-  prepares.push_back(CREATE_COMMAND_INFO("touch " + file2 + " && exit 1"));
+  ContainerPrepareInfo prepare2;
+  prepare2.mutable_command()->set_value("touch " + file2 + " && exit 1");
+  prepares.push_back(prepare2);
 
   Fetcher fetcher;
 
@@ -422,14 +430,14 @@ public:
 
   MOCK_METHOD5(
       prepare,
-      Future<Option<CommandInfo>>(
+      Future<Option<ContainerPrepareInfo>>(
           const ContainerID&,
           const ExecutorInfo&,
           const string&,
           const Option<string>&,
           const Option<string>&));
 
-  virtual Future<Option<CommandInfo>> _prepare(
+  virtual Future<Option<ContainerPrepareInfo>> _prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const string& directory,
@@ -532,7 +540,7 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhilePreparing)
   MockIsolator* isolator = new MockIsolator();
 
   Future<Nothing> prepare;
-  Promise<Option<CommandInfo>> promise;
+  Promise<Option<ContainerPrepareInfo>> promise;
 
   // Simulate a long prepare from the isolator.
   EXPECT_CALL(*isolator, prepare(_, _, _, _, _))
@@ -578,7 +586,9 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhilePreparing)
   ASSERT_TRUE(wait.isPending());
 
   // Need to help the compiler to disambiguate between overloads.
-  Option<CommandInfo> option = commandInfo;
+  ContainerPrepareInfo prepareInfo;
+  prepareInfo.mutable_command()->CopyFrom(commandInfo);
+  Option<ContainerPrepareInfo> option = prepareInfo;
   promise.set(option);
 
   AWAIT_READY(wait);

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/tests/containerizer/isolator.hpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/isolator.hpp 
b/src/tests/containerizer/isolator.hpp
index 8aaf88c..5eac750 100644
--- a/src/tests/containerizer/isolator.hpp
+++ b/src/tests/containerizer/isolator.hpp
@@ -31,10 +31,10 @@ class TestIsolatorProcess : public 
slave::MesosIsolatorProcess
 {
 public:
   static Try<mesos::slave::Isolator*> create(
-      const Option<CommandInfo>& commandInfo)
+      const Option<mesos::slave::ContainerPrepareInfo>& prepare)
   {
     process::Owned<MesosIsolatorProcess> process(
-        new TestIsolatorProcess(commandInfo));
+        new TestIsolatorProcess(prepare));
 
     return new slave::MesosIsolator(process);
   }
@@ -45,14 +45,14 @@ public:
           const std::list<mesos::slave::ExecutorRunState>&,
           const hashset<ContainerID>&));
 
-  virtual process::Future<Option<CommandInfo>> prepare(
+  virtual process::Future<Option<mesos::slave::ContainerPrepareInfo>> prepare(
       const ContainerID& containerId,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& rootfs,
       const Option<std::string>& user)
   {
-    return commandInfo;
+    return prepareInfo;
   }
 
   MOCK_METHOD2(
@@ -76,8 +76,8 @@ public:
       process::Future<Nothing>(const ContainerID&));
 
 private:
-  TestIsolatorProcess(const Option<CommandInfo>& _commandInfo)
-    : commandInfo(_commandInfo)
+  TestIsolatorProcess( const Option<mesos::slave::ContainerPrepareInfo>& info)
+    : prepareInfo(info)
   {
     EXPECT_CALL(*this, watch(testing::_))
       .WillRepeatedly(testing::Return(promise.future()));
@@ -89,7 +89,7 @@ private:
       .WillRepeatedly(testing::Return(Nothing()));
   }
 
-  const Option<CommandInfo> commandInfo;
+  const Option<mesos::slave::ContainerPrepareInfo> prepareInfo;
 
   process::Promise<mesos::slave::ExecutorLimitation> promise;
 };

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/src/tests/containerizer/isolator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/isolator_tests.cpp 
b/src/tests/containerizer/isolator_tests.cpp
index 59f08c0..51a4db1 100644
--- a/src/tests/containerizer/isolator_tests.cpp
+++ b/src/tests/containerizer/isolator_tests.cpp
@@ -93,8 +93,8 @@ using mesos::internal::slave::PosixCpuIsolatorProcess;
 using mesos::internal::slave::PosixMemIsolatorProcess;
 using mesos::internal::slave::Slave;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::Isolator;
-using mesos::slave::IsolatorProcess;
 
 using std::ostringstream;
 using std::set;
@@ -951,7 +951,7 @@ TEST_F(SharedFilesystemIsolatorTest, 
DISABLED_ROOT_RelativeVolume)
   ContainerID containerId;
   containerId.set_value(UUID::random().toString());
 
-  Future<Option<CommandInfo> > prepare =
+  Future<Option<ContainerPrepareInfo> > prepare =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -961,6 +961,7 @@ TEST_F(SharedFilesystemIsolatorTest, 
DISABLED_ROOT_RelativeVolume)
 
   AWAIT_READY(prepare);
   ASSERT_SOME(prepare.get());
+  ASSERT_TRUE(prepare.get().get().has_command());
 
   // The test will touch a file in container path.
   const string file = path::join(containerPath, UUID::random().toString());
@@ -972,7 +973,7 @@ TEST_F(SharedFilesystemIsolatorTest, 
DISABLED_ROOT_RelativeVolume)
   args.push_back("/bin/sh");
   args.push_back("-x");
   args.push_back("-c");
-  args.push_back(prepare.get().get().value() + " && touch " + file);
+  args.push_back(prepare.get().get().command().value() + " && touch " + file);
 
   Try<pid_t> pid = launcher.get()->fork(
       containerId,
@@ -1055,7 +1056,7 @@ TEST_F(SharedFilesystemIsolatorTest, 
DISABLED_ROOT_AbsoluteVolume)
   ContainerID containerId;
   containerId.set_value(UUID::random().toString());
 
-  Future<Option<CommandInfo> > prepare =
+  Future<Option<ContainerPrepareInfo> > prepare =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1065,6 +1066,7 @@ TEST_F(SharedFilesystemIsolatorTest, 
DISABLED_ROOT_AbsoluteVolume)
 
   AWAIT_READY(prepare);
   ASSERT_SOME(prepare.get());
+  ASSERT_TRUE(prepare.get().get().has_command());
 
   // Test the volume mounting by touching a file in the container's
   // /tmp, which should then be in flags.work_dir.
@@ -1075,7 +1077,7 @@ TEST_F(SharedFilesystemIsolatorTest, 
DISABLED_ROOT_AbsoluteVolume)
   args.push_back("/bin/sh");
   args.push_back("-x");
   args.push_back("-c");
-  args.push_back(prepare.get().get().value() +
+  args.push_back(prepare.get().get().command().value() +
                  " && touch " +
                  path::join(containerPath, filename));
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/14f80f96/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 45ef97a..778dc8c 100644
--- a/src/tests/containerizer/port_mapping_tests.cpp
+++ b/src/tests/containerizer/port_mapping_tests.cpp
@@ -78,6 +78,7 @@ using namespace routing::queueing;
 
 using mesos::internal::master::Master;
 
+using mesos::slave::ContainerPrepareInfo;
 using mesos::slave::Isolator;
 
 using std::list;
@@ -299,7 +300,7 @@ protected:
       int pipes[2],
       const ContainerID& containerId,
       const string& command,
-      const Option<CommandInfo>& preparation)
+      const Option<ContainerPrepareInfo>& preparation)
   {
     CommandInfo commandInfo;
     commandInfo.set_value(command);
@@ -318,7 +319,7 @@ protected:
 
     JSON::Object commands;
     JSON::Array array;
-    array.values.push_back(JSON::Protobuf(preparation.get()));
+    array.values.push_back(JSON::Protobuf(preparation.get().command()));
     commands.values["commands"] = array;
 
     launchFlags.commands = commands;
@@ -451,7 +452,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_NC_ContainerToContainerTCP)
   Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir1);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId1,
         executorInfo,
@@ -518,7 +519,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_NC_ContainerToContainerTCP)
   Try<string> dir2 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir2);
 
-  Future<Option<CommandInfo> > preparation2 =
+  Future<Option<ContainerPrepareInfo>> preparation2 =
     isolator.get()->prepare(
         containerId2,
         executorInfo,
@@ -611,7 +612,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_NC_ContainerToContainerUDP)
   Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir1);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId1,
         executorInfo,
@@ -678,7 +679,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_NC_ContainerToContainerUDP)
   Try<string> dir2 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir2);
 
-  Future<Option<CommandInfo> > preparation2 =
+  Future<Option<ContainerPrepareInfo>> preparation2 =
     isolator.get()->prepare(
         containerId2,
         executorInfo,
@@ -773,7 +774,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_HostToContainerUDP)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -890,7 +891,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_HostToContainerTCP)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1015,7 +1016,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_ContainerICMPExternal)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1101,7 +1102,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_ContainerICMPInternal)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1190,7 +1191,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerARPExternal)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1285,7 +1286,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_DNS)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1376,7 +1377,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_TooManyContainers)
   Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir1);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId1,
         executorInfo,
@@ -1427,7 +1428,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_TooManyContainers)
   Try<string> dir2 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir2);
 
-  Future<Option<CommandInfo> > preparation2 =
+  Future<Option<ContainerPrepareInfo>> preparation2 =
     isolator.get()->prepare(
         containerId2,
         executorInfo,
@@ -1493,7 +1494,7 @@ TEST_F(PortMappingIsolatorTest, ROOT_NC_SmallEgressLimit)
   Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,
@@ -1647,7 +1648,7 @@ TEST_F(PortMappingIsolatorTest, 
ROOT_NC_PortMappingStatistics)
   Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX"));
   ASSERT_SOME(dir1);
 
-  Future<Option<CommandInfo> > preparation1 =
+  Future<Option<ContainerPrepareInfo>> preparation1 =
     isolator.get()->prepare(
         containerId,
         executorInfo,

Reply via email to