Add slave id to docker container name prefix.

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


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

Branch: refs/heads/master
Commit: 5acbfd2e7907029d2979561a3876208941044fde
Parents: 9c5c927
Author: Timothy Chen <[email protected]>
Authored: Mon Nov 17 17:19:49 2014 -0800
Committer: Timothy Chen <[email protected]>
Committed: Fri May 22 23:13:50 2015 -0700

----------------------------------------------------------------------
 src/slave/containerizer/docker.cpp | 29 +++++++++++++++++++++++------
 src/slave/containerizer/docker.hpp |  2 +-
 2 files changed, 24 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/5acbfd2e/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp 
b/src/slave/containerizer/docker.cpp
index 408a443..a37b45d 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -72,8 +72,6 @@ using state::RunState;
 
 
 // Declared in header, see explanation there.
-// TODO(benh): At some point to run multiple slaves we'll need to make
-// the Docker container name creation include the slave ID.
 const string DOCKER_NAME_PREFIX = "mesos-";
 
 // Declared in header, see explanation there.
@@ -94,9 +92,25 @@ Option<ContainerID> parse(const Docker::Container& container)
   }
 
   if (name.isSome()) {
-    ContainerID id;
-    id.set_value(name.get());
-    return id;
+    // For Mesos version <= 0.21.0, the docker container name format
+    // was DOCKER_NAME_PREFIX + containerId, and starting with 0.22.0
+    // it is changed to DOCKER_NAME_PREFIX + slaveId + "/" +
+    // containerId.
+    // To still be backward compatible during upgrade, we still need
+    // to load the previous format.
+    // TODO(tnachen): Remove this check after deprecation cycle.
+    if (!strings::contains(name.get(), "/")) {
+      ContainerID id;
+      id.set_value(name.get());
+      return id;
+    }
+
+    vector<string> parts = strings::split(name.get(), "/");
+    if (parts.size() == 2) {
+      ContainerID id;
+      id.set_value(parts[1]);
+      return id;
+    }
   }
 
   return None();
@@ -286,7 +300,10 @@ Try<Nothing> DockerContainerizerProcess::checkpoint(
 Future<Nothing> DockerContainerizer::recover(
     const Option<SlaveState>& state)
 {
-  return dispatch(process.get(), &DockerContainerizerProcess::recover, state);
+  return dispatch(
+      process.get(),
+      &DockerContainerizerProcess::recover,
+      state);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/5acbfd2e/src/slave/containerizer/docker.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.hpp 
b/src/slave/containerizer/docker.hpp
index ed4ee19..f08520a 100644
--- a/src/slave/containerizer/docker.hpp
+++ b/src/slave/containerizer/docker.hpp
@@ -321,7 +321,7 @@ private:
 
     std::string name()
     {
-      return DOCKER_NAME_PREFIX + stringify(id);
+      return DOCKER_NAME_PREFIX + slaveId.value() + "/" + stringify(id);
     }
 
     std::string image() const

Reply via email to