xenapi: Make BitTorrent url more flexible
Change xenapi bittorrent plugin to not assume that torrent file is under CONF.xenapi_torrent_base_url + image_id + ".torrent". This allows for sources images from arbitrary torrent URLs. Change-Id: Ica9462a51c6299b5affc861781f3054d18866458
This commit is contained in:
parent
1fcebf22a6
commit
eb52c017a1
@ -266,7 +266,7 @@ class FetchVhdImageTestCase(test.TestCase):
|
||||
self._apply_stubouts()
|
||||
self._common_params_setup(True)
|
||||
|
||||
vm_utils._add_bittorrent_params(self.params)
|
||||
vm_utils._add_bittorrent_params(self.image_id, self.params)
|
||||
|
||||
vm_utils._fetch_using_dom0_plugin_with_retry(self.context,
|
||||
self.session, self.image_id, "bittorrent", self.params,
|
||||
@ -289,7 +289,7 @@ class FetchVhdImageTestCase(test.TestCase):
|
||||
self._common_params_setup(True)
|
||||
self.mox.StubOutWithMock(self.session, 'call_xenapi')
|
||||
|
||||
vm_utils._add_bittorrent_params(self.params)
|
||||
vm_utils._add_bittorrent_params(self.image_id, self.params)
|
||||
|
||||
vm_utils._fetch_using_dom0_plugin_with_retry(self.context,
|
||||
self.session, self.image_id, "bittorrent", self.params,
|
||||
|
@ -1142,7 +1142,7 @@ def _fetch_vhd_image(context, session, instance, image_id):
|
||||
if _image_uses_bittorrent(context, instance):
|
||||
plugin_name = 'bittorrent'
|
||||
callback = None
|
||||
_add_bittorrent_params(params)
|
||||
_add_bittorrent_params(image_id, params)
|
||||
else:
|
||||
plugin_name = 'glance'
|
||||
callback = _generate_glance_callback(context)
|
||||
@ -1180,20 +1180,18 @@ def _generate_glance_callback(context):
|
||||
return pick_glance
|
||||
|
||||
|
||||
def _add_bittorrent_params(params):
|
||||
params['torrent_base_url'] = CONF.xenapi_torrent_base_url
|
||||
params['torrent_seed_duration'] = CONF.xenapi_torrent_seed_duration
|
||||
params['torrent_seed_chance'] = CONF.xenapi_torrent_seed_chance
|
||||
params['torrent_max_last_accessed'] =\
|
||||
CONF.xenapi_torrent_max_last_accessed
|
||||
params['torrent_listen_port_start'] =\
|
||||
CONF.xenapi_torrent_listen_port_start
|
||||
params['torrent_listen_port_end'] =\
|
||||
CONF.xenapi_torrent_listen_port_end
|
||||
params['torrent_download_stall_cutoff'] =\
|
||||
CONF.xenapi_torrent_download_stall_cutoff
|
||||
params['torrent_max_seeder_processes_per_host'] =\
|
||||
CONF.xenapi_torrent_max_seeder_processes_per_host
|
||||
def _add_bittorrent_params(image_id, params):
|
||||
params['torrent_url'] = urlparse.urljoin(CONF.xenapi_torrent_base_url,
|
||||
"%s.torrent" % image_id)
|
||||
params['torrent_seed_duration'] = CONF.xenapi_torrent_seed_duration
|
||||
params['torrent_seed_chance'] = CONF.xenapi_torrent_seed_chance
|
||||
params['torrent_max_last_accessed'] = CONF.xenapi_torrent_max_last_accessed
|
||||
params['torrent_listen_port_start'] = CONF.xenapi_torrent_listen_port_start
|
||||
params['torrent_listen_port_end'] = CONF.xenapi_torrent_listen_port_end
|
||||
params['torrent_download_stall_cutoff'] = \
|
||||
CONF.xenapi_torrent_download_stall_cutoff
|
||||
params['torrent_max_seeder_processes_per_host'] = \
|
||||
CONF.xenapi_torrent_max_seeder_processes_per_host
|
||||
|
||||
|
||||
def _get_vdi_chain_size(session, vdi_uuid):
|
||||
|
@ -49,12 +49,11 @@ def _make_torrent_cache():
|
||||
return torrent_cache_path
|
||||
|
||||
|
||||
def _fetch_torrent_file(torrent_cache_path, image_id, torrent_base_url):
|
||||
def _fetch_torrent_file(torrent_cache_path, image_id, torrent_url):
|
||||
torrent_path = os.path.join(
|
||||
torrent_cache_path, image_id + '.torrent')
|
||||
|
||||
if not os.path.exists(torrent_path):
|
||||
torrent_url = torrent_base_url + "/%s.torrent" % image_id
|
||||
logging.info("Downloading %s" % torrent_url)
|
||||
|
||||
# Write contents to temporary path to ensure we don't have partially
|
||||
@ -250,7 +249,7 @@ def _make_seed_cache():
|
||||
return seed_cache_path
|
||||
|
||||
|
||||
def download_vhd(session, image_id, torrent_base_url, torrent_seed_duration,
|
||||
def download_vhd(session, image_id, torrent_url, torrent_seed_duration,
|
||||
torrent_seed_chance, torrent_max_last_accessed,
|
||||
torrent_listen_port_start, torrent_listen_port_end,
|
||||
torrent_download_stall_cutoff, uuid_stack, sr_path,
|
||||
@ -266,7 +265,7 @@ def download_vhd(session, image_id, torrent_base_url, torrent_seed_duration,
|
||||
_reap_old_torrent_files(torrent_cache_path, torrent_max_last_accessed)
|
||||
|
||||
torrent_path = _fetch_torrent_file(
|
||||
torrent_cache_path, image_id, torrent_base_url)
|
||||
torrent_cache_path, image_id, torrent_url)
|
||||
|
||||
staging_path = utils.make_staging_area(sr_path)
|
||||
try:
|
||||
|
Loading…
x
Reference in New Issue
Block a user