コード例 #1
0
    def test_lxc_teardown_container(
            self, mock_remove_maps, mock_nbd_disconnect, mock_umount,
            mock_loopremove, mock_exist):

        def proc_mounts(mount_point):
            mount_points = {
                '/mnt/loop/nopart': '/dev/loop0',
                '/mnt/loop/part': '/dev/mapper/loop0p1',
                '/mnt/nbd/nopart': '/dev/nbd15',
                '/mnt/nbd/part': '/dev/mapper/nbd15p1',
            }
            return mount_points[mount_point]

        self.stub_out('nova.virt.disk.api._DiskImage._device_for_path',
                      proc_mounts)
        expected_commands = []

        disk_api.teardown_container('/mnt/loop/nopart')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()
        mock_umount.assert_has_calls([mock.call('/dev/loop0')])
        mock_umount.reset_mock()

        disk_api.teardown_container('/mnt/loop/part')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()
        mock_umount.assert_has_calls([mock.call('/dev/mapper/loop0p1')])
        mock_umount.reset_mock()
        mock_remove_maps.assert_has_calls([mock.call('/dev/loop0')])
        mock_remove_maps.reset_mock()

        disk_api.teardown_container('/mnt/nbd/nopart')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                             ]
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_umount.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()
        mock_umount.reset_mock()

        disk_api.teardown_container('/mnt/nbd/part')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                             ]
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_umount.assert_has_calls([mock.call('/dev/mapper/nbd15p1')])
        mock_nbd_disconnect.reset_mock()
        mock_umount.reset_mock()
        mock_remove_maps.assert_has_calls([mock.call('/dev/nbd15')])
        mock_remove_maps.reset_mock()

        # NOTE(thomasem): Not adding any commands in this case, because we're
        # not expecting an additional umount for LocalBlockImages. This is to
        # assert that no additional commands are run in this case.
        disk_api.teardown_container('/dev/volume-group/uuid_disk')
        mock_umount.assert_not_called()

        self.assertEqual(self.executes, expected_commands)
コード例 #2
0
ファイル: test_virt.py プロジェクト: arbrandes/nova
    def test_lxc_teardown_container(
            self, mock_blockdev_flush, mock_remove_maps, mock_nbd_disconnect,
            mock_umount, mock_loopremove, mock_exist):

        def proc_mounts(mount_point):
            mount_points = {
                '/mnt/loop/nopart': '/dev/loop0',
                '/mnt/loop/part': '/dev/mapper/loop0p1',
                '/mnt/nbd/nopart': '/dev/nbd15',
                '/mnt/nbd/part': '/dev/mapper/nbd15p1',
            }
            return mount_points[mount_point]

        self.stub_out('nova.virt.disk.api._DiskImage._device_for_path',
                      proc_mounts)

        disk_api.teardown_container('/mnt/loop/nopart')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()
        mock_umount.assert_has_calls([mock.call('/dev/loop0')])
        mock_umount.reset_mock()

        disk_api.teardown_container('/mnt/loop/part')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()
        mock_umount.assert_has_calls([mock.call('/dev/mapper/loop0p1')])
        mock_umount.reset_mock()
        mock_remove_maps.assert_has_calls([mock.call('/dev/loop0')])
        mock_remove_maps.reset_mock()

        disk_api.teardown_container('/mnt/nbd/nopart')
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_umount.assert_has_calls([mock.call('/dev/nbd15')])
        mock_blockdev_flush.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()
        mock_umount.reset_mock()
        mock_blockdev_flush.reset_mock()

        disk_api.teardown_container('/mnt/nbd/part')
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_umount.assert_has_calls([mock.call('/dev/mapper/nbd15p1')])
        mock_blockdev_flush.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()
        mock_umount.reset_mock()
        mock_remove_maps.assert_has_calls([mock.call('/dev/nbd15')])
        mock_remove_maps.reset_mock()
        mock_blockdev_flush.reset_mock()

        # NOTE(thomasem): Not adding any commands in this case, because we're
        # not expecting an additional umount for LocalBlockImages. This is to
        # assert that no additional commands are run in this case.
        disk_api.teardown_container('/dev/volume-group/uuid_disk')
        mock_umount.assert_not_called()
コード例 #3
0
    def test_lxc_teardown_container_with_namespace_cleaned(self):

        def proc_mounts(self, mount_point):
            return None

        self.stubs.Set(os.path, 'exists', lambda _: True)
        self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts)
        expected_commands = []

        disk_api.teardown_container('/mnt/loop/nopart', '/dev/loop0')
        expected_commands += [
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/loop/part', '/dev/loop0')
        expected_commands += [
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/nbd/nopart', '/dev/nbd15')
        expected_commands += [
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        disk_api.teardown_container('/mnt/nbd/part', '/dev/nbd15')
        expected_commands += [
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        self.assertEqual(self.executes, expected_commands)
コード例 #4
0
    def test_lxc_teardown_container_with_namespace_cleaned(self):
        def proc_mounts(self, mount_point):
            return None

        self.stubs.Set(os.path, 'exists', lambda _: True)
        self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts)
        expected_commands = []

        disk_api.teardown_container('/mnt/loop/nopart', '/dev/loop0')
        expected_commands += [
            ('losetup', '--detach', '/dev/loop0'),
        ]

        disk_api.teardown_container('/mnt/loop/part', '/dev/loop0')
        expected_commands += [
            ('losetup', '--detach', '/dev/loop0'),
        ]

        disk_api.teardown_container('/mnt/nbd/nopart', '/dev/nbd15')
        expected_commands += [
            ('qemu-nbd', '-d', '/dev/nbd15'),
        ]

        disk_api.teardown_container('/mnt/nbd/part', '/dev/nbd15')
        expected_commands += [
            ('qemu-nbd', '-d', '/dev/nbd15'),
        ]

        self.assertEqual(self.executes, expected_commands)
コード例 #5
0
    def test_lxc_teardown_container(self):

        def proc_mounts(mount_point):
            mount_points = {
                '/mnt/loop/nopart': '/dev/loop0',
                '/mnt/loop/part': '/dev/mapper/loop0p1',
                '/mnt/nbd/nopart': '/dev/nbd15',
                '/mnt/nbd/part': '/dev/mapper/nbd15p1',
            }
            return mount_points[mount_point]

        self.stub_out('os.path.exists', lambda _: True)
        self.stub_out('nova.virt.disk.api._DiskImage._device_for_path',
                      proc_mounts)
        expected_commands = []

        disk_api.teardown_container('/mnt/loop/nopart')
        expected_commands += [
                              ('umount', '/dev/loop0'),
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/loop/part')
        expected_commands += [
                              ('umount', '/dev/mapper/loop0p1'),
                              ('kpartx', '-d', '/dev/loop0'),
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/nbd/nopart')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                              ('umount', '/dev/nbd15'),
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        disk_api.teardown_container('/mnt/nbd/part')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                              ('umount', '/dev/mapper/nbd15p1'),
                              ('kpartx', '-d', '/dev/nbd15'),
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        # NOTE(thomasem): Not adding any commands in this case, because we're
        # not expecting an additional umount for LocalBlockImages. This is to
        # assert that no additional commands are run in this case.
        disk_api.teardown_container('/dev/volume-group/uuid_disk')

        self.assertEqual(self.executes, expected_commands)
コード例 #6
0
ファイル: test_virt.py プロジェクト: cloudbau/nova
    def test_lxc_teardown_container(self):
        def proc_mounts(self, mount_point):
            mount_points = {
                "/mnt/loop/nopart": "/dev/loop0",
                "/mnt/loop/part": "/dev/mapper/loop0p1",
                "/mnt/nbd/nopart": "/dev/nbd15",
                "/mnt/nbd/part": "/dev/mapper/nbd15p1",
            }
            return mount_points[mount_point]

        self.stubs.Set(os.path, "exists", lambda _: True)
        self.stubs.Set(disk_api._DiskImage, "_device_for_path", proc_mounts)
        expected_commands = []

        disk_api.teardown_container("/mnt/loop/nopart")
        expected_commands += [("umount", "/dev/loop0"), ("losetup", "--detach", "/dev/loop0")]

        disk_api.teardown_container("/mnt/loop/part")
        expected_commands += [
            ("umount", "/dev/mapper/loop0p1"),
            ("kpartx", "-d", "/dev/loop0"),
            ("losetup", "--detach", "/dev/loop0"),
        ]

        disk_api.teardown_container("/mnt/nbd/nopart")
        expected_commands += [("umount", "/dev/nbd15"), ("qemu-nbd", "-d", "/dev/nbd15")]

        disk_api.teardown_container("/mnt/nbd/part")
        expected_commands += [
            ("umount", "/dev/mapper/nbd15p1"),
            ("kpartx", "-d", "/dev/nbd15"),
            ("qemu-nbd", "-d", "/dev/nbd15"),
        ]

        self.assertEqual(self.executes, expected_commands)
コード例 #7
0
    def test_lxc_teardown_container(self):

        def proc_mounts(self, mount_point):
            mount_points = {
                '/mnt/loop/nopart': '/dev/loop0',
                '/mnt/loop/part': '/dev/mapper/loop0p1',
                '/mnt/nbd/nopart': '/dev/nbd15',
                '/mnt/nbd/part': '/dev/mapper/nbd15p1',
            }
            return mount_points[mount_point]

        self.stubs.Set(os.path, 'exists', lambda _: True)
        self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts)
        expected_commands = []

        disk_api.teardown_container('/mnt/loop/nopart')
        expected_commands += [
                              ('umount', '/dev/loop0'),
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/loop/part')
        expected_commands += [
                              ('umount', '/dev/mapper/loop0p1'),
                              ('kpartx', '-d', '/dev/loop0'),
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/nbd/nopart')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                              ('umount', '/dev/nbd15'),
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        disk_api.teardown_container('/mnt/nbd/part')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                              ('umount', '/dev/mapper/nbd15p1'),
                              ('kpartx', '-d', '/dev/nbd15'),
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        self.assertEqual(self.executes, expected_commands)
コード例 #8
0
ファイル: test_virt.py プロジェクト: uruddarraju/nova
    def test_lxc_teardown_container(self):

        def proc_mounts(self, mount_point):
            mount_points = {
                '/mnt/loop/nopart': '/dev/loop0',
                '/mnt/loop/part': '/dev/mapper/loop0p1',
                '/mnt/nbd/nopart': '/dev/nbd15',
                '/mnt/nbd/part': '/dev/mapper/nbd15p1',
            }
            return mount_points[mount_point]

        self.stubs.Set(os.path, 'exists', lambda _: True)
        self.stubs.Set(disk_api._DiskImage, '_device_for_path', proc_mounts)
        expected_commands = []

        disk_api.teardown_container('/mnt/loop/nopart')
        expected_commands += [
                              ('umount', '/dev/loop0'),
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/loop/part')
        expected_commands += [
                              ('umount', '/dev/mapper/loop0p1'),
                              ('kpartx', '-d', '/dev/loop0'),
                              ('losetup', '--detach', '/dev/loop0'),
                             ]

        disk_api.teardown_container('/mnt/nbd/nopart')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                              ('umount', '/dev/nbd15'),
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        disk_api.teardown_container('/mnt/nbd/part')
        expected_commands += [
                              ('blockdev', '--flushbufs', '/dev/nbd15'),
                              ('umount', '/dev/mapper/nbd15p1'),
                              ('kpartx', '-d', '/dev/nbd15'),
                              ('qemu-nbd', '-d', '/dev/nbd15'),
                             ]

        self.assertEqual(self.executes, expected_commands)
コード例 #9
0
    def test_lxc_teardown_container_with_namespace_cleaned(
            self, mock_nbd_disconnect, mock_loopremove, mock_device_for_path,
            mock_exists):

        disk_api.teardown_container('/mnt/loop/nopart', '/dev/loop0')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()

        disk_api.teardown_container('/mnt/loop/part', '/dev/loop0')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()

        disk_api.teardown_container('/mnt/nbd/nopart', '/dev/nbd15')
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()

        disk_api.teardown_container('/mnt/nbd/part', '/dev/nbd15')
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()
コード例 #10
0
ファイル: test_virt.py プロジェクト: arbrandes/nova
    def test_lxc_teardown_container_with_namespace_cleaned(
            self, mock_nbd_disconnect, mock_loopremove, mock_device_for_path,
            mock_exists):

        disk_api.teardown_container('/mnt/loop/nopart', '/dev/loop0')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()

        disk_api.teardown_container('/mnt/loop/part', '/dev/loop0')
        mock_loopremove.assert_has_calls([mock.call('/dev/loop0')])
        mock_loopremove.reset_mock()

        disk_api.teardown_container('/mnt/nbd/nopart', '/dev/nbd15')
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()

        disk_api.teardown_container('/mnt/nbd/part', '/dev/nbd15')
        mock_nbd_disconnect.assert_has_calls([mock.call('/dev/nbd15')])
        mock_nbd_disconnect.reset_mock()
コード例 #11
0
ファイル: test_virt.py プロジェクト: syotani/nova
    def test_lxc_teardown_container_with_namespace_cleaned(self):
        def proc_mounts(self, mount_point):
            return None

        self.stubs.Set(os.path, "exists", lambda _: True)
        self.stubs.Set(disk_api._DiskImage, "_device_for_path", proc_mounts)
        expected_commands = []

        disk_api.teardown_container("/mnt/loop/nopart", "/dev/loop0")
        expected_commands += [("losetup", "--detach", "/dev/loop0")]

        disk_api.teardown_container("/mnt/loop/part", "/dev/loop0")
        expected_commands += [("losetup", "--detach", "/dev/loop0")]

        disk_api.teardown_container("/mnt/nbd/nopart", "/dev/nbd15")
        expected_commands += [("qemu-nbd", "-d", "/dev/nbd15")]

        disk_api.teardown_container("/mnt/nbd/part", "/dev/nbd15")
        expected_commands += [("qemu-nbd", "-d", "/dev/nbd15")]

        self.assertEqual(self.executes, expected_commands)