Merge "VMware: driver not handling port other than 443"
This commit is contained in:
@@ -1062,8 +1062,8 @@ def fake_upload_image(context, image, instance, **kwargs):
|
||||
pass
|
||||
|
||||
|
||||
def fake_fetch_image(context, instance, host, dc_name, ds_name, file_path,
|
||||
cookies=None):
|
||||
def fake_fetch_image(context, instance, host, port, dc_name, ds_name,
|
||||
file_path, cookies=None):
|
||||
"""Fakes the fetch of an image."""
|
||||
ds_file_path = "[" + ds_name + "] " + file_path
|
||||
_add_file(ds_file_path)
|
||||
|
||||
@@ -38,6 +38,7 @@ class VMwareImagesTestCase(test.NoDBTestCase):
|
||||
file_path = 'fake_file'
|
||||
ds_name = 'ds1'
|
||||
host = mock.MagicMock()
|
||||
port = 7443
|
||||
context = mock.MagicMock()
|
||||
|
||||
image_data = {
|
||||
@@ -55,7 +56,7 @@ class VMwareImagesTestCase(test.NoDBTestCase):
|
||||
def fake_read_handle(read_iter):
|
||||
return read_file_handle
|
||||
|
||||
def fake_write_handle(host, dc_name, ds_name, cookies,
|
||||
def fake_write_handle(host, port, dc_name, ds_name, cookies,
|
||||
file_path, file_size):
|
||||
return write_file_handle
|
||||
|
||||
@@ -72,11 +73,11 @@ class VMwareImagesTestCase(test.NoDBTestCase):
|
||||
) as (glance_read, http_write, start_transfer, image_show,
|
||||
image_download):
|
||||
images.fetch_image(context, instance,
|
||||
host, dc_name,
|
||||
host, port, dc_name,
|
||||
ds_name, file_path)
|
||||
|
||||
glance_read.assert_called_once_with(read_iter)
|
||||
http_write.assert_called_once_with(host, dc_name, ds_name, None,
|
||||
http_write.assert_called_once_with(host, port, dc_name, ds_name, None,
|
||||
file_path, image_data['size'])
|
||||
start_transfer.assert_called_once_with(
|
||||
context, read_file_handle,
|
||||
|
||||
@@ -32,6 +32,7 @@ class ReadWriteUtilTestCase(test.NoDBTestCase):
|
||||
httplib.HTTPConnection.endheaders()
|
||||
self.mox.ReplayAll()
|
||||
file = read_write_util.VMwareHTTPWriteFile(ipv6_host,
|
||||
443,
|
||||
'fake_dc',
|
||||
'fake_ds',
|
||||
dict(),
|
||||
@@ -45,13 +46,15 @@ class ReadWriteUtilTestCase(test.NoDBTestCase):
|
||||
@mock.patch.object(urllib2, 'urlopen')
|
||||
def test_ipv6_host_read(self, mock_open, mock_request):
|
||||
ipv6_host = 'fd8c:215d:178e:c51e:200:c9ff:fed1:584c'
|
||||
port = 7443
|
||||
folder = 'tmp/fake.txt'
|
||||
read_write_util.VMwareHTTPReadFile(ipv6_host,
|
||||
port,
|
||||
'fake_dc',
|
||||
'fake_ds',
|
||||
dict(),
|
||||
folder)
|
||||
base_url = 'https://[%s]/folder/%s' % (ipv6_host, folder)
|
||||
base_url = 'https://[%s]:%s/folder/%s' % (ipv6_host, port, folder)
|
||||
base_url += '?dsName=fake_ds&dcPath=fake_dc'
|
||||
headers = {'Cookie': '', 'User-Agent': 'OpenStack-ESX-Adapter'}
|
||||
mock_request.assert_called_with(base_url,
|
||||
|
||||
@@ -874,6 +874,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||
self._context,
|
||||
self._instance,
|
||||
self._session._host,
|
||||
self._session._port,
|
||||
self._dc_info.name,
|
||||
self._ds.name,
|
||||
upload_file_name,
|
||||
@@ -1274,6 +1275,7 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
|
||||
self._context,
|
||||
vi.instance,
|
||||
self._session._host,
|
||||
self._session._port,
|
||||
self._dc_info.name,
|
||||
self._ds.name,
|
||||
image_ds_loc.rel_path,
|
||||
|
||||
@@ -205,6 +205,7 @@ def upload_iso_to_datastore(iso_path, instance, **kwargs):
|
||||
with open(iso_path, 'r') as iso_file:
|
||||
write_file_handle = read_write_util.VMwareHTTPWriteFile(
|
||||
kwargs.get("host"),
|
||||
kwargs.get("port"),
|
||||
kwargs.get("data_center_name"),
|
||||
kwargs.get("datastore_name"),
|
||||
kwargs.get("cookies"),
|
||||
@@ -224,7 +225,7 @@ def upload_iso_to_datastore(iso_path, instance, **kwargs):
|
||||
instance=instance)
|
||||
|
||||
|
||||
def fetch_image(context, instance, host, dc_name, ds_name, file_path,
|
||||
def fetch_image(context, instance, host, port, dc_name, ds_name, file_path,
|
||||
cookies=None):
|
||||
"""Download image from the glance image server."""
|
||||
image_ref = instance['image_ref']
|
||||
@@ -239,7 +240,7 @@ def fetch_image(context, instance, host, dc_name, ds_name, file_path,
|
||||
read_iter = IMAGE_API.download(context, image_ref)
|
||||
read_file_handle = read_write_util.GlanceFileRead(read_iter)
|
||||
write_file_handle = read_write_util.VMwareHTTPWriteFile(
|
||||
host, dc_name, ds_name, cookies, file_path, file_size)
|
||||
host, port, dc_name, ds_name, cookies, file_path, file_size)
|
||||
start_transfer(context, read_file_handle, file_size,
|
||||
write_file_handle=write_file_handle)
|
||||
LOG.debug("Downloaded image file data %(image_ref)s to "
|
||||
@@ -360,6 +361,7 @@ def upload_image(context, image, instance, **kwargs):
|
||||
instance=instance)
|
||||
read_file_handle = read_write_util.VMwareHTTPReadFile(
|
||||
kwargs.get("host"),
|
||||
kwargs.get("port"),
|
||||
kwargs.get("data_center_name"),
|
||||
kwargs.get("datastore_name"),
|
||||
kwargs.get("cookies"),
|
||||
|
||||
@@ -106,22 +106,22 @@ class VMwareHTTPFile(object):
|
||||
"""Get size of the file to be read."""
|
||||
raise NotImplementedError()
|
||||
|
||||
def _get_base_url(self, scheme, host, file_path):
|
||||
def _get_base_url(self, scheme, host, port, file_path):
|
||||
if netutils.is_valid_ipv6(host):
|
||||
base_url = "%s://[%s]/folder/%s" % (scheme, host,
|
||||
urllib.pathname2url(file_path))
|
||||
base_url = ("%s://[%s]:%s/folder/%s"
|
||||
% (scheme, host, port, urllib.pathname2url(file_path)))
|
||||
else:
|
||||
base_url = "%s://%s/folder/%s" % (scheme, host,
|
||||
urllib.pathname2url(file_path))
|
||||
base_url = ("%s://%s:%s/folder/%s"
|
||||
% (scheme, host, port, urllib.pathname2url(file_path)))
|
||||
return base_url
|
||||
|
||||
|
||||
class VMwareHTTPWriteFile(VMwareHTTPFile):
|
||||
"""VMware file write handler class."""
|
||||
|
||||
def __init__(self, host, data_center_name, datastore_name, cookies,
|
||||
def __init__(self, host, port, data_center_name, datastore_name, cookies,
|
||||
file_path, file_size, scheme="https"):
|
||||
base_url = self._get_base_url(scheme, host, file_path)
|
||||
base_url = self._get_base_url(scheme, host, port, file_path)
|
||||
param_list = {"dcPath": data_center_name, "dsName": datastore_name}
|
||||
base_url = base_url + "?" + urllib.urlencode(param_list)
|
||||
_urlparse = urlparse.urlparse(base_url)
|
||||
@@ -155,9 +155,9 @@ class VMwareHTTPWriteFile(VMwareHTTPFile):
|
||||
class VMwareHTTPReadFile(VMwareHTTPFile):
|
||||
"""VMware file read handler class."""
|
||||
|
||||
def __init__(self, host, data_center_name, datastore_name, cookies,
|
||||
def __init__(self, host, port, data_center_name, datastore_name, cookies,
|
||||
file_path, scheme="https"):
|
||||
base_url = self._get_base_url(scheme, host, file_path)
|
||||
base_url = self._get_base_url(scheme, host, port, file_path)
|
||||
param_list = {"dcPath": data_center_name, "dsName": datastore_name}
|
||||
base_url = base_url + "?" + urllib.urlencode(param_list)
|
||||
headers = {'User-Agent': USER_AGENT,
|
||||
|
||||
@@ -292,6 +292,7 @@ class VMwareVMOps(object):
|
||||
context,
|
||||
vi.instance,
|
||||
session._host,
|
||||
session._port,
|
||||
vi.dc_info.name,
|
||||
vi.datastore.name,
|
||||
image_ds_loc.rel_path,
|
||||
@@ -631,6 +632,7 @@ class VMwareVMOps(object):
|
||||
images.upload_iso_to_datastore(
|
||||
tmp_file, instance,
|
||||
host=self._session._host,
|
||||
port=self._session._port,
|
||||
data_center_name=dc_name,
|
||||
datastore_name=data_store_name,
|
||||
cookies=cookies,
|
||||
@@ -797,6 +799,7 @@ class VMwareVMOps(object):
|
||||
adapter_type=adapter_type,
|
||||
image_version=1,
|
||||
host=self._session._host,
|
||||
port=self._session._port,
|
||||
data_center_name=dc_info.name,
|
||||
datastore_name=datastore_name,
|
||||
cookies=cookies,
|
||||
|
||||
Reference in New Issue
Block a user