* The regular expression pattern used to parse the URL. Capturing groups are used to identify and extract the
* various component parts of the URL.
*/
- private static Pattern pattern = Pattern.compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?/(v[0-9\\.]+)/?");
+ private static Pattern pattern = Pattern.compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?(/.*)?/(v[0-9\\.]+)/?");
/**
* The URL scheme or protocol, such as HTTP or HTTPS
*/
private String host;
+ /**
+ * The path of the service, or null if no path is defined
+ */
+ private String path;
+
/**
* The port number, or null if no port is defined
*/
obj.scheme = matcher.group(1);
obj.host = matcher.group(2);
obj.port = matcher.group(3);
- obj.version = matcher.group(4);
+ obj.path = matcher.group(4);
+ obj.version = matcher.group(5);
}
}
return host;
}
+ /**
+ * @return The URL path, or null if no path was defined
+ */
+ public String getPath() {
+ return path;
+ }
+
/**
* @return The URL port, or null if no port was defined
*/
@Override
public String toString() {
- return String.format("%s://%s:%s/%s", scheme, host, port, version);
+ StringBuilder str = new StringBuilder();
+
+ str.append(scheme + "://" + host);
+ if (port != null) {
+ str.append(":" + port);
+ }
+ if (path != null) {
+ str.append(path);
+ }
+ str.append("/" + version);
+
+ return str.toString();
}
}
* various component parts of the URL.
*/
private static Pattern pattern = Pattern
- .compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?/v2/([^/]+)/servers/([^/]+)");
+ .compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?(/.*)?/v2/([^/]+)/servers/([^/]+)");
/**
* The URL scheme or protocol, such as HTTP or HTTPS
*/
private String host;
+ /**
+ * The path, or null if no path is defined
+ */
+ private String path;
+
/**
* The port number, or null if no port is defined
*/
obj.scheme = matcher.group(1);
obj.host = matcher.group(2);
obj.port = matcher.group(3);
- obj.tenantId = matcher.group(4);
- obj.serverId = matcher.group(5);
+ obj.path = matcher.group(4);
+ obj.tenantId = matcher.group(5);
+ obj.serverId = matcher.group(6);
}
}
return host;
}
+ /**
+ * @return THe URL path, or null if no path was defined
+ */
+ public String getPath() {
+ return path;
+ }
+
/**
* @return The URL port, or null if no port was defined
*/
@Override
public String toString() {
- return String.format("%s://%s:%s/%s/servers/%s", scheme, host, port, tenantId, serverId);
+ StringBuilder str = new StringBuilder();
+ str.append(scheme + "://" + host);
+ if (port != null) {
+ str.append(":" + port);
+ }
+ if (path != null) {
+ str.append(path);
+ }
+ str.append("/v2/" + tenantId + "/servers/" + serverId);
+ return str.toString();
}
}
provider1.tenant1.name=appc
provider1.tenant1.userid=appc
provider1.tenant1.password=appc
+
+#Your OpenStack IP
+test.ip=192.168.1.2
+# Your OpenStack Platform's Keystone Port (default is 5000)
+test.port=5000
+test.tenantid=abcde12345fghijk6789lmnopq123rst
+test.vmid=abc12345-1234-5678-890a-abcdefg12345
package org.openecomp.appc.adapter.iaas.impl;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.util.Properties;
* Test that we can parse and interpret valid URLs
*/
@Test
- public void testValidURLs() {
+ public void testValidURL1() {
URL = "http://192.168.1.1:5000/v2.0/";
IdentityURL idurl = IdentityURL.parseURL(URL);
assertNotNull(idurl);
- System.out.println(idurl.getVersion());
+ assertTrue(idurl.getScheme().equals("http"));
+ assertTrue(idurl.getHost().equals("192.168.1.1"));
+ assertTrue(idurl.getPort().equals("5000"));
+ assertNull(idurl.getPath());
+ assertTrue(idurl.getVersion().equals("v2.0"));
+ assertTrue(idurl.toString().equals("http://192.168.1.1:5000/v2.0"));
+ }
+
+ @Test
+ public void testValidURL2() {
+ URL = "https://192.168.1.1:5000/v3/";
+ IdentityURL idurl = IdentityURL.parseURL(URL);
+ assertNotNull(idurl);
+ assertTrue(idurl.getScheme().equals("https"));
+ assertTrue(idurl.getHost().equals("192.168.1.1"));
+ assertTrue(idurl.getPort().equals("5000"));
+ assertNull(idurl.getPath());
+ assertTrue(idurl.getVersion().equals("v3"));
+ assertTrue(idurl.toString().equals("https://192.168.1.1:5000/v3"));
+ }
+
+ @Test
+ public void testValidURL3() {
+ URL = "http://192.168.1.1/v2.0/";
+ IdentityURL idurl = IdentityURL.parseURL(URL);
+ assertNotNull(idurl);
+ assertTrue(idurl.getScheme().equals("http"));
+ assertTrue(idurl.getHost().equals("192.168.1.1"));
+ assertNull(idurl.getPort());
+ assertNull(idurl.getPath());
+ assertTrue(idurl.getVersion().equals("v2.0"));
+ System.out.println(idurl.toString());
+ assertTrue(idurl.toString().equals("http://192.168.1.1/v2.0"));
+ }
+
+ @Test
+ public void testValidURL4() {
+ URL = "http://msb.onap.org:80/api/multicloud/v0/cloudowner_region/identity/v3";
+ IdentityURL idurl = IdentityURL.parseURL(URL);
+ assertNotNull(idurl);
+ assertTrue(idurl.getScheme().equals("http"));
+ assertTrue(idurl.getHost().equals("msb.onap.org"));
+ assertTrue(idurl.getPort().equals("80"));
+ assertTrue(idurl.getPath().equals("/api/multicloud/v0/cloudowner_region/identity"));
+ assertTrue(idurl.getVersion().equals("v3"));
+ assertTrue(idurl.toString().equals("http://msb.onap.org:80/api/multicloud/v0/cloudowner_region/identity/v3"));
}
}
package org.openecomp.appc.adapter.iaas.impl;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.Properties;
@BeforeClass
public static void before() {
- IP = "192.168.1.2";
- PORT = "5000";
- TENANTID = "abcde12345fghijk6789lmnopq123rst";
- VMID = "abc12345-1234-5678-890a-abcdefg12345";
- URL = String.format("http://%s:%s/v2/%s/servers/%s", IP, PORT, TENANTID, VMID);
+ Properties props = ConfigurationFactory.getConfiguration().getProperties();
+ IP = props.getProperty("test.ip");
+ PORT = props.getProperty("test.port");
+ TENANTID = props.getProperty("test.tenantid");
+ VMID = props.getProperty("test.vmid");
}
/**
* Test that we can parse and interpret valid URLs
*/
@Test
- public void testValidURLs() {
+ public void testValidURL1() {
+ URL = String.format("http://%s:%s/v2/%s/servers/%s", IP, PORT, TENANTID, VMID);
VMURL url = VMURL.parseURL(URL);
assertEquals("http", url.getScheme());
assertEquals(PORT, url.getPort());
assertEquals(TENANTID, url.getTenantId());
assertEquals(VMID, url.getServerId());
+ assertEquals(url.toString(), URL);
+ }
- url = VMURL.parseURL(String.format("http://%s/v2/%s/servers/%s", IP, TENANTID, VMID));
+ @Test
+ public void testValidURL2() {
+ URL = String.format("http://%s/v2/%s/servers/%s", IP, TENANTID, VMID);
+ VMURL url = VMURL.parseURL(URL);
assertEquals("http", url.getScheme());
assertEquals(IP, url.getHost());
assertNull(url.getPort());
+ assertNull(url.getPath());
+ assertEquals(TENANTID, url.getTenantId());
+ assertEquals(VMID, url.getServerId());
+ assertEquals(url.toString(), URL);
+ }
+
+ @Test
+ public void testValidURL3() {
+ URL = "http://msb.onap.org:80/api/multicloud/v0/cloudowner_region/v2/abcde12345fghijk6789lmnopq123rst/servers/abc12345-1234-5678-890a-abcdefg12345";
+ VMURL url = VMURL.parseURL(URL);
+ assertNotNull(url);
+ assertEquals("http", url.getScheme());
+ assertEquals("msb.onap.org", url.getHost());
+ assertEquals("80", url.getPort());
+ assertEquals("/api/multicloud/v0/cloudowner_region", url.getPath());
assertEquals(TENANTID, url.getTenantId());
assertEquals(VMID, url.getServerId());
+ assertEquals(url.toString(), URL);
}
/**