Beispiel #1
0
    def _common_params_setup(self, uses_bittorrent):
        self.context = "context"
        self.session = FakeSession()
        self.instance = {"uuid": "uuid"}
        self.image_id = "image_id"
        self.uuid_stack = ["uuid_stack"]
        self.sr_path = "sr_path"
        self.params = {
            'image_id': self.image_id,
            'uuid_stack': self.uuid_stack,
            'sr_path': self.sr_path
        }
        self.bt_params = copy.copy(self.params)
        self.bt_params['torrent_url'] = "%s.torrent" % self.image_id
        self.vdis = {'root': {'uuid': 'vdi'}}

        vm_utils._make_uuid_stack().AndReturn(self.uuid_stack)
        vm_utils.get_sr_path(self.session).AndReturn(self.sr_path)
        vm_utils._image_uses_bittorrent(
            self.context, self.instance).AndReturn(uses_bittorrent)
        if uses_bittorrent:

            def set_url(instance, image_id, params):
                params['torrent_url'] = "%s.torrent" % image_id

            vm_utils._add_torrent_url(
                self.instance, self.image_id,
                self.params).WithSideEffects(set_url).AndReturn(True)
Beispiel #2
0
    def _setup_bittorrent(self):
        vm_utils._image_uses_bittorrent(self.context, self.instance).AndReturn(True)

        def _add_torrent_url(instance, image_id, params):
            params["torrent_url"] = "%s.torrent" % image_id

        vm_utils._add_torrent_url(self.instance, self.image_id, mox.IgnoreArg()).AndReturn(True)

        vm_utils._add_bittorrent_params(self.image_id, self.params)

        self.session.call_plugin_serialized_with_retry("bittorrent", "download_vhd", 0, None, **self.params).AndReturn(
            self.vdis
        )
Beispiel #3
0
    def test_default_fetch_url(self):
        image_id = "1-2-3-4-5"
        params = {}
        self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
        expected = urlparse.urljoin(CONF.xenapi_torrent_base_url,
                                    "%s.torrent" % image_id)
        self.assertEqual(expected, params['torrent_url'])
        self.assertEqual(vm_utils.get_torrent_url,
                         vm_utils._TORRENT_URL_FN)

        # call it again now that the fetcher fn is cached:
        params = {}
        self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
Beispiel #4
0
    def _setup_bittorrent(self):
        vm_utils._image_uses_bittorrent(self.context,
                                        self.instance).AndReturn(True)

        def _add_torrent_url(instance, image_id, params):
            params['torrent_url'] = "%s.torrent" % image_id

        vm_utils._add_torrent_url(self.instance, self.image_id,
                                  mox.IgnoreArg()).AndReturn(True)

        vm_utils._add_bittorrent_params(self.image_id, self.params)

        self.session.call_plugin_serialized_with_retry(
            'bittorrent', 'download_vhd', 0, None,
            **self.params).AndReturn(self.vdis)
Beispiel #5
0
    def test_with_extension(self):
        def mock_iter_single(namespace):
            return [MockEntryPoint()]
        self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_single)

        image_id = "1-2-3-4-5"
        params = {}
        self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
        expected = "http://www.foobar.com/%s" % image_id
        self.assertEqual(expected, params['torrent_url'])
        self.assertEqual(another_fetcher, vm_utils._TORRENT_URL_FN)
Beispiel #6
0
    def test_with_extension(self):
        def mock_iter_single(namespace):
            return [MockEntryPoint()]

        self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_single)

        image_id = "1-2-3-4-5"
        params = {}
        self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
        expected = "http://www.foobar.com/%s" % image_id
        self.assertEqual(expected, params['torrent_url'])
        self.assertEqual(another_fetcher, vm_utils._TORRENT_URL_FN)
Beispiel #7
0
    def test_default_fetch_url(self):
        def mock_iter_none(namespace):
            return []

        self.stubs.Set(pkg_resources, "iter_entry_points", mock_iter_none)

        image_id = "1-2-3-4-5"
        params = {}
        self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
        expected = urlparse.urljoin(CONF.xenapi_torrent_base_url, "%s.torrent" % image_id)
        self.assertEqual(expected, params["torrent_url"])
        self.assertEqual(vm_utils.get_torrent_url, vm_utils._TORRENT_URL_FN)
Beispiel #8
0
    def test_default_fetch_url(self):
        def mock_iter_none(namespace):
            return []

        self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_none)

        image_id = "1-2-3-4-5"
        params = {}
        self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
        expected = urlparse.urljoin(CONF.xenapi_torrent_base_url,
                                    "%s.torrent" % image_id)
        self.assertEqual(expected, params['torrent_url'])
        self.assertEqual(vm_utils.get_torrent_url, vm_utils._TORRENT_URL_FN)
    def _common_params_setup(self, uses_bittorrent):
        self.context = "context"
        self.session = FakeSession()
        self.instance = {"uuid": "uuid"}
        self.image_id = "image_id"
        self.uuid_stack = ["uuid_stack"]
        self.sr_path = "sr_path"
        self.params = {'image_id': self.image_id,
            'uuid_stack': self.uuid_stack, 'sr_path': self.sr_path}
        self.bt_params = copy.copy(self.params)
        self.bt_params['torrent_url'] = "%s.torrent" % self.image_id
        self.vdis = {'root': {'uuid': 'vdi'}}

        vm_utils._make_uuid_stack().AndReturn(self.uuid_stack)
        vm_utils.get_sr_path(self.session).AndReturn(self.sr_path)
        vm_utils._image_uses_bittorrent(self.context,
            self.instance).AndReturn(uses_bittorrent)
        if uses_bittorrent:
            def set_url(instance, image_id, params):
                params['torrent_url'] = "%s.torrent" % image_id

            vm_utils._add_torrent_url(self.instance, self.image_id,
                    self.params).WithSideEffects(set_url).AndReturn(True)
Beispiel #10
0
 def test_fetch_url_failure(self):
     # fetcher function fails:
     vm_utils._TORRENT_URL_FN = bad_fetcher
     self.assertFalse(vm_utils._add_torrent_url({}, '1-2-3-4-5', {}))
Beispiel #11
0
 def test_fetch_url_failure(self):
     # fetcher function fails:
     vm_utils._TORRENT_URL_FN = bad_fetcher
     self.assertFalse(vm_utils._add_torrent_url({}, "1-2-3-4-5", {}))