Example #1
0
 def test_default_options_override_defaults(self):
     with mount.DockerMount('foobar') as m:
         o = m.default_options(['override', 'opts'],
                               default_con='foobar_context',
                               default_opt=['will not appear'])
         self.assertEqual(o,
                          ['override', 'opts', 'context="foobar_context"'])
Example #2
0
    def test_mount_excepts_unknown_backend(self):
        def mock_info():
            return {'Driver': 'foobardriver'}

        m = mount.DockerMount('foobar')
        m.client.info = mock_info
        exp = 'Atomic mount is not supported on the foobardriver docker ' \
              'storage backend.'
        self.assertRaisesRegexp(mount.MountError, exp, m.mount, 'fedora:22')
        self.assertRaisesRegexp(mount.MountError, exp, m.unmount)
Example #3
0
    def test_dockermount_context_manager(self):
        def mock_info():
            return {'Driver': 'foobardriver'}

        dm = mount.DockerMount('foobar')
        dm._info = mock_info  # pylint: disable=protected-access
        message = 'Atomic mount is not supported on the foobardriver docker ' \
                  'storage backend.'
        with self.assertRaises(mount.MountError) as cm:
            with mount.MountContextManager(dm, 'fedora:25'):
                pass
        self.assertEqual(cm.exception.val, message)
Example #4
0
    def unmount(self):
        if os.geteuid() != 0:
            raise ValueError("This command must be run as root.")
        try:
            dev = mount.Mount.get_dev_at_mountpoint(self.args.mountpoint)

            # If there's a bind-mount over the directory, unbind it.
            if dev.rsplit('[', 1)[-1].strip(']') == '/rootfs' \
                    and self.d.info()['Driver'] == 'devicemapper':
                mount.Mount.unmount_path(self.args.mountpoint)

            return mount.DockerMount(self.args.mountpoint).unmount()

        except mount.MountError as dme:
            raise ValueError(str(dme))
Example #5
0
    def test_mount_excepts_unknown_backend(self):
        def mock_info():
            return {'Driver': 'foobardriver'}

        with mount.DockerMount('foobar') as m:
            m._info = mock_info  # pylint: disable=protected-access
            exp = 'Atomic mount is not supported on the foobardriver docker ' \
                  'storage backend.'

            # assertRaisesRegexp was deprecated by assertRaisesRegex.
            # If it is present, prefer assertRaisesRegex.
            if hasattr(self, 'assertRaisesRegex'):
                assertRaisesRegex = getattr(self, "assertRaisesRegex")
            else:
                assertRaisesRegex = getattr(self, "assertRaisesRegexp")
            assertRaisesRegex(mount.MountError, exp, m.mount, 'fedora:22')
            assertRaisesRegex(mount.MountError, exp, m.unmount)
Example #6
0
    def mount(self):
        if os.geteuid() != 0:
            raise ValueError("This command must be run as root.")
        try:
            options = [opt for opt in self.args.options.split(',') if opt]
            mount.DockerMount(self.args.mountpoint,
                              self.args.live).mount(self.args.image, options)

            # only need to bind-mount on the devicemapper driver
            if self.d.info()['Driver'] == 'devicemapper':
                mount.Mount.mount_path(os.path.join(self.args.mountpoint,
                                                    "rootfs"),
                                       self.args.mountpoint,
                                       bind=True)

        except mount.MountError as dme:
            raise ValueError(str(dme))
Example #7
0
 def test_default_options_no_surplus_context(self):
     with mount.DockerMount('foobar') as m:
         o = m.default_options(['ro', 'context="foobang_context"'],
                               default_con='foobar_context')
         self.assertEqual(o, ['ro', 'context="foobang_context"'])
Example #8
0
 def test_default_options(self):
     with mount.DockerMount('foobar') as m:
         o = m.default_options([],
                               default_con='foobar_context',
                               default_opt=['foo', 'bar'])
         self.assertEqual(o, ['foo', 'bar', 'context="foobar_context"'])
Example #9
0
 def __init__(self, docker_name):
     self.dm = mount.DockerMount("/tmp", mnt_mkdir=True)
     self.name = docker_name
     self.root_path = self.dm.mount(self.name)
     self.chroot = os.path.join(self.root_path, "rootfs")