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):