summaryrefslogtreecommitdiffstats
path: root/cadi
diff options
context:
space:
mode:
authorInstrumental <jonathan.gathman@att.com>2019-05-31 10:02:47 -0500
committerInstrumental <jonathan.gathman@att.com>2019-05-31 10:09:32 -0500
commit98adb75e5e627d28ecdf659f4c8ed640ce53ed5e (patch)
treed7f2bb6a52a5118b49d38ddc7e80e1da6f998070 /cadi
parentdc87ad47ebe4915de69a7c8ce424c4ab517bb513 (diff)
Update DNSLocator code and use
Issue-ID: AAF-838 Change-Id: Ieaf112365e40237b6f252371d2d2f95e9bc47f89 Signed-off-by: Instrumental <jonathan.gathman@att.com>
Diffstat (limited to 'cadi')
-rw-r--r--cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFSingleLocator.java5
-rw-r--r--cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java7
-rw-r--r--cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java11
-rw-r--r--cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java41
-rw-r--r--cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java29
-rw-r--r--cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java4
-rw-r--r--cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java17
7 files changed, 82 insertions, 32 deletions
diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFSingleLocator.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFSingleLocator.java
index 93ab4ab8..80e9f190 100644
--- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFSingleLocator.java
+++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AAFSingleLocator.java
@@ -23,6 +23,7 @@ package org.onap.aaf.cadi.aaf.v2_0;
import java.net.URI;
import java.net.URISyntaxException;
+import org.onap.aaf.cadi.Access;
import org.onap.aaf.cadi.Locator;
import org.onap.aaf.cadi.LocatorException;
@@ -89,4 +90,8 @@ public class AAFSingleLocator implements Locator<URI> {
private class SingleItem implements Item {
}
+
+ public static AAFSingleLocator create(Access access, String url) throws URISyntaxException {
+ return new AAFSingleLocator(url);
+ }
}
diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java
index 2405962c..ac8168b9 100644
--- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java
+++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/v2_0/AbsAAFLocator.java
@@ -74,7 +74,12 @@ public abstract class AbsAAFLocator<TRANS extends Trans> implements Locator<URI>
}
try {
aaf_locator_host = rph.replacements(getClass().getSimpleName(),"https://"+Config.AAF_LOCATE_URL_TAG,null,null);
- aaf_locator_uri = new URI(aaf_locator_host);
+ if(aaf_locator_host.endsWith("/locate")) {
+ aaf_locator_uri = new URI(aaf_locator_host);
+ } else {
+ aaf_locator_uri = new URI(aaf_locator_host+"/locate");
+ }
+
access.printf(Level.INFO, "AbsAAFLocator AAF URI is %s",aaf_locator_uri);
} catch (URISyntaxException e) {
throw new LocatorException(e);
diff --git a/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java b/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java
index 1e5c5211..ae562cb2 100644
--- a/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java
+++ b/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java
@@ -162,14 +162,21 @@ public class HMangr {
return same(ss,retryable);
}
public<RET> RET all(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable) throws LocatorException, CadiException, APIException {
- return oneOf(ss,retryable,true,null);
+ return call(ss,retryable,true,null);
}
public<RET> RET all(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify) throws LocatorException, CadiException, APIException {
- return oneOf(ss,retryable,notify,null);
+ return call(ss,retryable,notify,null);
}
+ public <RET> RET allExcept(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify, String selfHost) throws LocatorException, CadiException, APIException {
+ return call(ss,retryable,notify,selfHost);
+ }
+
public<RET> RET oneOf(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify,String host) throws LocatorException, CadiException, APIException {
+ return call(ss,retryable,notify,host);
+ }
+ private<RET> RET call(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify,String host) throws LocatorException, CadiException, APIException {
RET ret = null;
// make sure we have all current references:
loc.refresh();
diff --git a/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java b/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java
index 8357129f..b7c0b02c 100644
--- a/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java
+++ b/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java
@@ -60,23 +60,27 @@ public class DNSLocator implements Locator<URI> {
if (aaf_locate==null) {
throw new LocatorException("Null passed into DNSLocator constructor");
}
- int start, port;
+ int start, defPort;
if (aaf_locate.startsWith("https:")) {
- protocol = "https:";
- start = 9; // https://
- port = 443;
+ protocol = "https";
+ start = 8; // https://
+ defPort = 443;
} else if (aaf_locate.startsWith("http:")) {
- protocol = "http:";
- start = 8; // http://
- port = 80;
+ protocol = "http";
+ start = 7; // http://
+ defPort = 80;
} else {
throw new LocatorException("DNSLocator accepts only https or http protocols. (requested URL " + aaf_locate + ')');
}
-
- parsePorts(aaf_locate.substring(start), port);
+ host = parseHostAndPorts(aaf_locate, start, defPort);
+ refresh();
}
- @Override
+ public static DNSLocator create(Access access, String url) throws LocatorException {
+ return new DNSLocator(access, url);
+ }
+
+ @Override
public URI get(Item item) throws LocatorException {
return hosts[((DLItem)item).cnt].uri;
}
@@ -159,10 +163,11 @@ public class DNSLocator implements Locator<URI> {
return false;
}
- private void parsePorts(String aaf_locate, int defaultPort) throws LocatorException {
+ private String parseHostAndPorts(String aaf_locate, int _start, int defaultPort) throws LocatorException {
int slash, start;
- int colon = aaf_locate.indexOf(':');
+ int colon = aaf_locate.indexOf(':',_start);
if (colon > 0) {
+ host = aaf_locate.substring(_start,colon);
start = colon + 1;
int left = aaf_locate.indexOf('[', start);
if (left > 0) {
@@ -195,8 +200,12 @@ public class DNSLocator implements Locator<URI> {
}
}
} else {
+ slash = aaf_locate.indexOf('/', _start);
+ host = slash<_start?aaf_locate.substring(_start):aaf_locate.substring(_start,slash);
startPort = endPort = defaultPort;
- }
+ }
+
+ return host;
}
private class Host {
@@ -206,9 +215,13 @@ public class DNSLocator implements Locator<URI> {
public Host(InetAddress inetAddress, int port, String suffix) throws URISyntaxException {
ia = inetAddress;
- uri = new URI(protocol,null,inetAddress.getHostAddress(),port,suffix,null,null);
+ uri = new URI(protocol,null,inetAddress.getCanonicalHostName(),port,suffix,null,null);
status = Status.UNTRIED;
}
+
+ public String toString() {
+ return uri.toString() + " - " + status.name();
+ }
}
private class DLItem implements Item {
diff --git a/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java b/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java
index 9d87d699..d1744253 100644
--- a/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java
+++ b/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java
@@ -21,8 +21,14 @@
package org.onap.aaf.cadi.http.test;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
@@ -34,10 +40,10 @@ import java.net.URISyntaxException;
import javax.net.ssl.SSLHandshakeException;
-import static org.hamcrest.CoreMatchers.*;
-
-import org.junit.*;
-import org.mockito.*;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import org.onap.aaf.cadi.Access;
import org.onap.aaf.cadi.CadiException;
import org.onap.aaf.cadi.Locator;
@@ -49,6 +55,8 @@ import org.onap.aaf.cadi.client.Retryable;
import org.onap.aaf.cadi.http.HMangr;
import org.onap.aaf.misc.env.APIException;
+import junit.framework.Assert;
+
public class JU_HMangr {
@Mock Locator<URI> locMock;
@@ -173,9 +181,14 @@ public class JU_HMangr {
@Test
public void allTest() throws LocatorException, CadiException, APIException {
HManagerStub hman = new HManagerStub(access, locMock);
+
assertThat(hman.best(ssMock, retryableMock), is(nullValue()));
- assertThat(hman.all(ssMock, retryableMock), is(nullValue()));
- assertThat(hman.all(ssMock, retryableMock, true), is(nullValue()));
+ try {
+ hman.all(ssMock, retryableMock, true);
+ Assert.fail("Should have thrown LocatorException");
+ } catch (LocatorException e) {
+ assertEquals(e.getLocalizedMessage(),"No available clients to call");
+ }
}
@Test
diff --git a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java
index 9b5bbafe..dfc7142a 100644
--- a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java
+++ b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java
@@ -53,9 +53,9 @@ public class JU_DNSLocator {
item = dl.best();
uri = dl.get(item);
- assertThat(uri.toString(), is("https://127.0.0.1:8100"));
+ assertThat(uri.toString(), is("https://localhost:8100"));
item = dl.best();
- assertThat(uri.toString(), is("https://127.0.0.1:8100"));
+ assertThat(uri.toString(), is("https://localhost:8100"));
assertThat(dl.hasItems(), is(true));
for (item = dl.first(); item != null; item = dl.next(item)) {
diff --git a/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java b/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java
index 8cb1045b..52bb53ef 100644
--- a/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java
+++ b/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java
@@ -221,6 +221,7 @@ public class Config {
public static final String AAF_URL_GUI="aaf_url_gui";
public static final String AAF_URL_FS="aaf_url_fs";
public static final String AAF_URL_CM = "aaf_url_cm";
+ public static final String AAF_URL_CM_DEF = "https://AAF_LOCATE_URL/AAF_NS.cm:"+AAF_DEFAULT_API_VERSION;
public static final String AAF_URL_HELLO = "aaf_url_hello";
public static final String CM_TRUSTED_CAS = "cm_trusted_cas";
@@ -856,18 +857,24 @@ public class Config {
} catch (UnknownHostException | CadiException e1) {
throw new LocatorException(e1);
}
-
+
+ String aaf_locator_class;
+ if(_url.equals(url) && !url.contains("/locate/")) {
+ aaf_locator_class = "org.onap.aaf.cadi.locator.DNSLocator";
+ } else {
+ aaf_locator_class = AAF_LOCATOR_CLASS_DEF;
+ }
try {
- Class<?> lcls = loadClass(access,AAF_LOCATOR_CLASS_DEF);
+ Class<?> lcls = loadClass(access,aaf_locator_class);
if (lcls==null) {
throw new CadiException("Need to include aaf-cadi-aaf jar for AAFLocator");
}
// First check for preloaded
try {
- Method meth = lcls.getMethod("create",String.class);
- locator = (Locator<URI>)meth.invoke(null,url);
+ Method meth = lcls.getMethod("create",Access.class,String.class);
+ locator = (Locator<URI>)meth.invoke(null,access,url);
} catch (Exception e) {
- access.log(Level.DEBUG, "(Not fatal) Cannot load by create(String)", e);
+ access.log(Level.TRACE, "(Not fatal) Cannot load by create(String)", e);
}
if (locator==null) {
URI locatorURI = new URI(url);