Merge "VMware: driver not handling port other than 443"

This commit is contained in:
Jenkins
2015-01-19 09:20:08 +00:00
committed by Gerrit Code Review
7 changed files with 28 additions and 17 deletions
+2 -2
View File
@@ -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,
+4 -2
View File
@@ -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"),
+9 -9
View File
@@ -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,
+3
View File
@@ -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,