You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by jc...@apache.org on 2016/10/19 21:47:47 UTC

aurora git commit: Adding logic to copy network files when using the Mesos containierizer with a Docker image.

Repository: aurora
Updated Branches:
  refs/heads/master 485504a20 -> f4259c4b7


Adding logic to copy network files when using the Mesos containierizer with a Docker image.

The networking files /etc/resolv.conf, /etc/hosts and /etc/hostname are now copied into the taskfs
when using the Mesos containierizer with a Docker image.

Bugs closed: AURORA-1798

Reviewed at https://reviews.apache.org/r/53003/


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

Branch: refs/heads/master
Commit: f4259c4b7fd0c8ef8b167a84983281aae43410a9
Parents: 485504a
Author: Justin Pinkul <jp...@live.com>
Authored: Wed Oct 19 14:13:28 2016 -0500
Committer: Joshua Cohen <jc...@apache.org>
Committed: Wed Oct 19 14:13:28 2016 -0500

----------------------------------------------------------------------
 .../apache/aurora/executor/common/sandbox.py    | 15 ++++++++++++++
 .../aurora/executor/common/test_sandbox.py      | 21 ++++++++++++++++++++
 2 files changed, 36 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/f4259c4b/src/main/python/apache/aurora/executor/common/sandbox.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/executor/common/sandbox.py b/src/main/python/apache/aurora/executor/common/sandbox.py
index 4a0f3b5..9d6e73c 100644
--- a/src/main/python/apache/aurora/executor/common/sandbox.py
+++ b/src/main/python/apache/aurora/executor/common/sandbox.py
@@ -16,6 +16,7 @@ import getpass
 import grp
 import os
 import pwd
+import shutil
 import subprocess
 from abc import abstractmethod, abstractproperty
 
@@ -298,6 +299,19 @@ class FileSystemImageSandbox(DirectorySandbox):
 
     do_mount(self.root, os.path.join(self._task_fs_root, self._sandbox_mount_point.lstrip('/')))
 
+  def _copy_files(self):
+    def copy_if_exists(source, destination):
+      if os.path.exists(source):
+        shutil.copy(source, destination)
+        log.info('Copying %s into task filesystem at %s.' % (source, destination))
+
+    # TODO(jpinkul): In Mesos the network/cni isolator is responsible for copying these network
+    # files but this logic is being bypassed at the moment due to shelling out to
+    # mesos-containerizer. Once this is no longer necessary this copy should be removed.
+    copy_if_exists('/etc/resolv.conf', os.path.join(self._task_fs_root, 'etc/resolv.conf'))
+    copy_if_exists('/etc/hosts', os.path.join(self._task_fs_root, 'etc/hosts'))
+    copy_if_exists('/etc/hostname', os.path.join(self._task_fs_root, 'etc/hostname'))
+
   @property
   def container_root(self):
     return self._sandbox_mount_point
@@ -313,3 +327,4 @@ class FileSystemImageSandbox(DirectorySandbox):
     super(FileSystemImageSandbox, self).create()
 
     self._mount_paths()
+    self._copy_files()

http://git-wip-us.apache.org/repos/asf/aurora/blob/f4259c4b/src/test/python/apache/aurora/executor/common/test_sandbox.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/executor/common/test_sandbox.py b/src/test/python/apache/aurora/executor/common/test_sandbox.py
index 41ee884..a441d2a 100644
--- a/src/test/python/apache/aurora/executor/common/test_sandbox.py
+++ b/src/test/python/apache/aurora/executor/common/test_sandbox.py
@@ -178,6 +178,27 @@ def test_verify_group_match(mock_check_output):
       sandbox._verify_group_match_in_taskfs(2, 'test-group')
 
 
+def test_verify_network_files():
+  with temporary_dir() as d:
+    task_fs_path = os.path.join(d, 'taskfs')
+    os.makedirs(os.path.join(task_fs_path, 'etc'))
+
+    with mock.patch.dict(os.environ, {'MESOS_DIRECTORY': d}):
+      sandbox = FileSystemImageSandbox(
+          os.path.join(d, 'sandbox'),
+          sandbox_mount_point='/some/sandbox/path')
+
+      sandbox._copy_files()
+
+    def verify_copy(path):
+      if os.path.exists(path):
+        assert os.path.exists(os.path.join(task_fs_path, path.lstrip('/')))
+
+    verify_copy('/etc/resolv.conf')
+    verify_copy('/etc/hostname')
+    verify_copy('/etc/hosts')
+
+
 @mock.patch('subprocess.check_output')
 @mock.patch.dict(os.environ, {'MESOS_DIRECTORY': MOCK_MESOS_DIRECTORY})
 def test_verify_user_match(mock_check_output):