Skip to content
Snippets Groups Projects
Commit 1a32b0f2 authored by knownexus's avatar knownexus
Browse files

Adding Dummy sandbox and nolocal platform

parent d0e832b6
No related branches found
No related tags found
Loading
Pipeline #30085382 passed
......@@ -19,7 +19,7 @@ import os
import resource
from .._exceptions import PlatformError
from ..sandbox import SandboxChroot
from ..sandbox import SandboxChroot, DummySandbox
from . import Platform
......@@ -38,7 +38,10 @@ class Darwin(Platform):
return self._artifact_cache
def create_sandbox(self, *args, **kwargs):
return SandboxChroot(*args, **kwargs)
if os.path.exists('/dev/fuse'):
return SandboxChroot(*args, **kwargs)
else:
DummySandbox().run()
def get_cpu_count(self, cap=None):
if cap < os.cpu_count():
......
......@@ -24,7 +24,7 @@ from .. import _site
from .. import utils
from .._artifactcache.cascache import CASCache
from .._message import Message, MessageType
from ..sandbox import SandboxBwrap
from ..sandbox import SandboxBwrap, DummySandbox
from . import Platform
......@@ -48,10 +48,13 @@ class Linux(Platform):
return self._artifact_cache
def create_sandbox(self, *args, **kwargs):
# Inform the bubblewrap sandbox as to whether it can use user namespaces or not
kwargs['user_ns_available'] = self._user_ns_available
kwargs['die_with_parent_available'] = self._die_with_parent_available
return SandboxBwrap(*args, **kwargs)
if not (os.path.exists(utils.get_host_tool('bwrap')) and os.path.exists('/dev/fuse')):
DummySandbox.run()
else:
# Inform the bubblewrap sandbox as to whether it can use user namespaces or not
kwargs['user_ns_available'] = self._user_ns_available
kwargs['die_with_parent_available'] = self._die_with_parent_available
return SandboxBwrap(*args, **kwargs)
################################################
# Private Methods #
......
......@@ -54,6 +54,8 @@ class Platform():
backend = 'linux'
elif sys.platform.startswith('darwin'):
backend = 'darwin'
elif not (os.path.exists(utils.get_host_tool('bwrap')) and os.path.exists('/dev/fuse')):
backend = 'no_local'
else:
backend = 'unix'
......@@ -63,6 +65,8 @@ class Platform():
from .darwin import Darwin as PlatformImpl
elif backend == 'unix':
from .unix import Unix as PlatformImpl
elif backend == 'no_local':
from .nolocal import Nolocal as PlatformImpl
else:
raise PlatformError("No such platform: '{}'".format(backend))
......
......@@ -21,3 +21,4 @@ from .sandbox import Sandbox, SandboxFlags
from ._sandboxchroot import SandboxChroot
from ._sandboxbwrap import SandboxBwrap
from ._sandboxremote import SandboxRemote
from ._dummysandbox import DummySandbox
#
# Copyright (C) 2018 Codethink Limited
# Copyright (C) 2018 Bloomberg Finance LP
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
from .._exceptions import SandboxError
class DummySandbox():
def run(self):
raise SandboxError("Sandboxes are not supported on this platform")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment