Skip to content

Commit e5158b2

Browse files
authored
vmware: encode disk path for URL based access (#6989)
1 parent 4d80ea6 commit e5158b2

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

vmware-base/src/main/java/com/cloud/hypervisor/vmware/util/VmwareContext.java

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,6 @@
1616
// under the License.
1717
package com.cloud.hypervisor.vmware.util;
1818

19-
import com.cloud.hypervisor.vmware.mo.DatacenterMO;
20-
import com.cloud.hypervisor.vmware.mo.DatastoreFile;
21-
import com.cloud.utils.ActionDelegate;
22-
import com.cloud.utils.StringUtils;
23-
import com.vmware.pbm.PbmPortType;
24-
import com.vmware.pbm.PbmServiceInstanceContent;
25-
import com.vmware.vim25.ManagedObjectReference;
26-
import com.vmware.vim25.ObjectContent;
27-
import com.vmware.vim25.ObjectSpec;
28-
import com.vmware.vim25.PropertyFilterSpec;
29-
import com.vmware.vim25.PropertySpec;
30-
import com.vmware.vim25.ServiceContent;
31-
import com.vmware.vim25.TaskInfo;
32-
import com.vmware.vim25.TraversalSpec;
33-
import com.vmware.vim25.VimPortType;
34-
import org.apache.cloudstack.utils.security.SSLUtils;
35-
import org.apache.cloudstack.utils.security.SecureSSLSocketFactory;
36-
import org.apache.log4j.Logger;
37-
38-
import javax.net.ssl.HostnameVerifier;
39-
import javax.net.ssl.HttpsURLConnection;
40-
import javax.net.ssl.SSLSession;
41-
import javax.xml.ws.soap.SOAPFaultException;
4219
import java.io.BufferedInputStream;
4320
import java.io.BufferedOutputStream;
4421
import java.io.BufferedReader;
@@ -59,6 +36,31 @@
5936
import java.util.List;
6037
import java.util.Map;
6138

39+
import javax.net.ssl.HostnameVerifier;
40+
import javax.net.ssl.HttpsURLConnection;
41+
import javax.net.ssl.SSLSession;
42+
import javax.xml.ws.soap.SOAPFaultException;
43+
44+
import org.apache.cloudstack.utils.security.SSLUtils;
45+
import org.apache.cloudstack.utils.security.SecureSSLSocketFactory;
46+
import org.apache.log4j.Logger;
47+
48+
import com.cloud.hypervisor.vmware.mo.DatacenterMO;
49+
import com.cloud.hypervisor.vmware.mo.DatastoreFile;
50+
import com.cloud.utils.ActionDelegate;
51+
import com.cloud.utils.StringUtils;
52+
import com.vmware.pbm.PbmPortType;
53+
import com.vmware.pbm.PbmServiceInstanceContent;
54+
import com.vmware.vim25.ManagedObjectReference;
55+
import com.vmware.vim25.ObjectContent;
56+
import com.vmware.vim25.ObjectSpec;
57+
import com.vmware.vim25.PropertyFilterSpec;
58+
import com.vmware.vim25.PropertySpec;
59+
import com.vmware.vim25.ServiceContent;
60+
import com.vmware.vim25.TaskInfo;
61+
import com.vmware.vim25.TraversalSpec;
62+
import com.vmware.vim25.VimPortType;
63+
6264
public class VmwareContext {
6365
private static final Logger s_logger = Logger.getLogger(VmwareContext.class);
6466

@@ -631,12 +633,12 @@ public String composeDatastoreBrowseUrl(String dcName, String datastoreName, Str
631633
sb.append("https://");
632634
sb.append(_serverAddress);
633635
sb.append("/folder/");
634-
sb.append(relativePath);
635636
try {
637+
sb.append(URLEncoder.encode(relativePath, "UTF-8"));
636638
sb.append("?dcPath=").append(URLEncoder.encode(dcName, "UTF-8"));
637639
sb.append("&dsName=").append(URLEncoder.encode(datastoreName, "UTF-8"));
638640
} catch (UnsupportedEncodingException e) {
639-
s_logger.error("Unable to encode URL. dcPath : " + dcName + ", dsName :" + datastoreName, e);
641+
s_logger.error(String.format("Unable to encode URL. relativePath : %s, dcPath : %s, dsName : %s", relativePath, dcName, datastoreName), e);
640642
}
641643
return sb.toString();
642644
}

0 commit comments

Comments
 (0)