Code Review
/
aaf
/
authz.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
K8s doesn't necessarily support DNS
[aaf/authz.git]
/
cadi
/
client
/
src
/
main
/
java
/
org
/
onap
/
aaf
/
cadi
/
locator
/
DNSLocator.java
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
1fc4b83
..
8053dab
100644
(file)
--- 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
@@
-27,11
+27,10
@@
import java.net.URI;
import java.net.URISyntaxException;
import org.onap.aaf.cadi.Access;
import java.net.URISyntaxException;
import org.onap.aaf.cadi.Access;
-import org.onap.aaf.cadi.Locator;
-import org.onap.aaf.cadi.LocatorException;
import org.onap.aaf.cadi.Access.Level;
import org.onap.aaf.cadi.Access.Level;
+import org.onap.aaf.cadi.LocatorException;
-public class DNSLocator implements Locator<URI> {
+public class DNSLocator implements
Sized
Locator<URI> {
private static enum Status {UNTRIED, OK, INVALID, SLOW};
private static final int CHECK_TIME = 3000;
private static enum Status {UNTRIED, OK, INVALID, SLOW};
private static final int CHECK_TIME = 3000;
@@
-40,13
+39,15
@@
public class DNSLocator implements Locator<URI> {
private Host[] hosts;
private int startPort, endPort;
private String suffix;
private Host[] hosts;
private int startPort, endPort;
private String suffix;
+
+ private int size = 1; // initial, until refreshed.
public DNSLocator(Access access, String protocol, String host, String range) {
this.host = host;
this.protocol = protocol;
this.access = access;
int dash = range.indexOf('-');
public DNSLocator(Access access, String protocol, String host, String range) {
this.host = host;
this.protocol = protocol;
this.access = access;
int dash = range.indexOf('-');
- if(dash<0) {
+ if
(dash<0) {
startPort = endPort = Integer.parseInt(range);
} else {
startPort = Integer.parseInt(range.substring(0,dash));
startPort = endPort = Integer.parseInt(range);
} else {
startPort = Integer.parseInt(range.substring(0,dash));
@@
-57,23
+58,27
@@
public class DNSLocator implements Locator<URI> {
public DNSLocator(Access access, String aaf_locate) throws LocatorException {
this.access = access;
public DNSLocator(Access access, String aaf_locate) throws LocatorException {
this.access = access;
- if(aaf_locate==null) {
+ if
(aaf_locate==null) {
throw new LocatorException("Null passed into DNSLocator constructor");
}
throw new LocatorException("Null passed into DNSLocator constructor");
}
- int start,
p
ort;
- if
(aaf_locate.startsWith("https:
")) {
- protocol = "https
:
";
- start =
9
; // https://
-
p
ort = 443;
- } else if
(aaf_locate.startsWith("http:
")) {
- protocol = "http
:
";
- start =
8
; // http://
-
p
ort = 80;
+ int start,
defP
ort;
+ if
(aaf_locate.startsWith("https://
")) {
+ protocol = "https";
+ start =
8
; // https://
+
defP
ort = 443;
+ } else if
(aaf_locate.startsWith("http://
")) {
+ protocol = "http";
+ start =
7
; // http://
+
defP
ort = 80;
} else {
throw new LocatorException("DNSLocator accepts only https or http protocols. (requested URL " + aaf_locate + ')');
}
} 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();
+ }
+
+ public static DNSLocator create(Access access, String url) throws LocatorException {
+ return new DNSLocator(access, url);
}
@Override
}
@Override
@@
-83,8
+88,8
@@
public class DNSLocator implements Locator<URI> {
@Override
public boolean hasItems() {
@Override
public boolean hasItems() {
- for(Host h : hosts) {
- if(h.status==Status.OK) {
+ for
(Host h : hosts) {
+ if
(h.status==Status.OK) {
return true;
}
}
return true;
}
}
@@
-100,7
+105,7
@@
public class DNSLocator implements Locator<URI> {
@Override
public Item best() throws LocatorException {
// not a good "best"
@Override
public Item best() throws LocatorException {
// not a good "best"
- for(int i=0;i<hosts.length;++i) {
+ for
(int i=0;i<hosts.length;++i) {
switch(hosts[i].status) {
case OK:
return new DLItem(i);
switch(hosts[i].status) {
case OK:
return new DLItem(i);
@@
-110,7
+115,7
@@
public class DNSLocator implements Locator<URI> {
break;
case UNTRIED:
try {
break;
case UNTRIED:
try {
- if(hosts[i].ia.isReachable(CHECK_TIME)) {
+ if
(hosts[i].ia.isReachable(CHECK_TIME)) {
hosts[i].status = Status.OK;
return new DLItem(i);
}
hosts[i].status = Status.OK;
return new DLItem(i);
}
@@
-133,7
+138,7
@@
public class DNSLocator implements Locator<URI> {
@Override
public Item next(Item item) throws LocatorException {
DLItem di = (DLItem)item;
@Override
public Item next(Item item) throws LocatorException {
DLItem di = (DLItem)item;
- if(++di.cnt<hosts.length) {
+ if
(++di.cnt<hosts.length) {
return di;
} else {
return null;
return di;
} else {
return null;
@@
-146,12
+151,13
@@
public class DNSLocator implements Locator<URI> {
InetAddress[] ias = InetAddress.getAllByName(host);
Host[] temp = new Host[ias.length * (1 + endPort - startPort)];
int cnt = -1;
InetAddress[] ias = InetAddress.getAllByName(host);
Host[] temp = new Host[ias.length * (1 + endPort - startPort)];
int cnt = -1;
- for(int j=startPort; j<=endPort; ++j) {
- for(int i=0;i<ias.length;++i) {
+ for
(int j=startPort; j<=endPort; ++j) {
+ for
(int i=0;i<ias.length;++i) {
temp[++cnt] = new Host(ias[i], j, suffix);
}
}
hosts = temp;
temp[++cnt] = new Host(ias[i], j, suffix);
}
}
hosts = temp;
+ size = temp.length * (endPort-startPort+1);
return true;
} catch (Exception e) {
access.log(Level.ERROR, e);
return true;
} catch (Exception e) {
access.log(Level.ERROR, e);
@@
-159,13
+165,14
@@
public class DNSLocator implements Locator<URI> {
return false;
}
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 slash, start;
- int colon = aaf_locate.indexOf(':');
- if(colon > 0) {
+ int colon = aaf_locate.indexOf(':',_start);
+ if (colon > 0) {
+ host = aaf_locate.substring(_start,colon);
start = colon + 1;
int left = aaf_locate.indexOf('[', start);
start = colon + 1;
int left = aaf_locate.indexOf('[', start);
- if(left > 0) {
+ if
(left > 0) {
int right = aaf_locate.indexOf(']', left + 1);
if (right < 0) {
throw new LocatorException("Missing closing bracket in DNSLocator constructor. (requested URL " + aaf_locate + ')');
int right = aaf_locate.indexOf(']', left + 1);
if (right < 0) {
throw new LocatorException("Missing closing bracket in DNSLocator constructor. (requested URL " + aaf_locate + ')');
@@
-176,27
+183,36
@@
public class DNSLocator implements Locator<URI> {
if (dash == (right - 1) || dash == (left + 1)) {
throw new LocatorException("Missing ports in brackets in DNSLocator constructor. (requested URL " + aaf_locate + ')');
}
if (dash == (right - 1) || dash == (left + 1)) {
throw new LocatorException("Missing ports in brackets in DNSLocator constructor. (requested URL " + aaf_locate + ')');
}
- if(dash < 0) {
+ if
(dash < 0) {
startPort = endPort = Integer.parseInt(aaf_locate.substring(left + 1, right));
} else {
startPort = Integer.parseInt(aaf_locate.substring(left + 1, dash));
endPort = Integer.parseInt(aaf_locate.substring(dash + 1, right));
}
startPort = endPort = Integer.parseInt(aaf_locate.substring(left + 1, right));
} else {
startPort = Integer.parseInt(aaf_locate.substring(left + 1, dash));
endPort = Integer.parseInt(aaf_locate.substring(dash + 1, right));
}
+ slash = aaf_locate.indexOf('/', start);
+ if(slash>=0) {
+ suffix = aaf_locate.substring(slash);
+ }
} else {
slash = aaf_locate.indexOf('/', start);
if (slash == start) {
throw new LocatorException("Missing port before '/' in DNSLocator constructor. (requested URL " + aaf_locate + ')');
}
} else {
slash = aaf_locate.indexOf('/', start);
if (slash == start) {
throw new LocatorException("Missing port before '/' in DNSLocator constructor. (requested URL " + aaf_locate + ')');
}
- if(slash < 0) {
+ if
(slash < 0) {
startPort = endPort = Integer.parseInt(aaf_locate.substring(start));
} else {
startPort = endPort = Integer.parseInt(aaf_locate.substring(start, slash));
startPort = endPort = Integer.parseInt(aaf_locate.substring(start));
} else {
startPort = endPort = Integer.parseInt(aaf_locate.substring(start, slash));
+ suffix = aaf_locate.substring(slash);
}
}
} else {
}
}
} else {
+ slash = aaf_locate.indexOf('/', _start);
+ host = slash<_start?aaf_locate.substring(_start):aaf_locate.substring(_start,slash);
startPort = endPort = defaultPort;
startPort = endPort = defaultPort;
- }
+ }
+
+ return host;
}
private class Host {
}
private class Host {
@@
-206,9
+222,13
@@
public class DNSLocator implements Locator<URI> {
public Host(InetAddress inetAddress, int port, String suffix) throws URISyntaxException {
ia = inetAddress;
public Host(InetAddress inetAddress, int port, String suffix) throws URISyntaxException {
ia = inetAddress;
- uri = new URI(protocol,null,inetAddress.get
HostAddress
(),port,suffix,null,null);
+ uri = new URI(protocol,null,inetAddress.get
CanonicalHostName
(),port,suffix,null,null);
status = Status.UNTRIED;
}
status = Status.UNTRIED;
}
+
+ public String toString() {
+ return uri.toString() + " - " + status.name();
+ }
}
private class DLItem implements Item {
}
private class DLItem implements Item {
@@
-220,4
+240,8
@@
public class DNSLocator implements Locator<URI> {
}
public void destroy() {}
}
public void destroy() {}
+
+ public int size() {
+ return size;
+ }
}
}