import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.opendaylight.netvirt.bgpmanager.BgpManager;
+import org.opendaylight.netvirt.bgpmanager.BgpConfigurationManager;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.Bgp;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.AsId;
import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.ebgp.rev150901.bgp.GracefulRestart;
private static final String RDSTR = "RD";
private static final String MPSTR = "Maxpath";
- private final BgpManager bgpManager;
+ private final BgpConfigurationManager bgpConfigurationManager;
- public Cache(BgpManager bgpManager) {
- this.bgpManager = bgpManager;
+ public Cache(BgpConfigurationManager bgpConfigurationManager) {
+ this.bgpConfigurationManager = bgpConfigurationManager;
}
private Object usage() {
return doExecute();
}
- @SuppressWarnings("resource")
+ @SuppressWarnings({"resource", "checkstyle:RegexpSinglelineJava"})
@Override
protected Object doExecute() {
boolean listVrfs = false;
boolean listNets = false;
- PrintStream ps = session.getConsole();
-
+ PrintStream ps = System.out;
if (action != null) {
return usage();
}
PrintStream fileStream = null;
- if (ofile != null) {
- try {
- fileStream = new PrintStream(ofile);
- ps = fileStream;
- } catch (FileNotFoundException e) {
- session.getConsole().println("error: cannot create file " + ofile + "; exception: " + e);
- return null;
- }
- }
- if (list != null) {
- for (String item : list) {
- switch (item) {
- case "vrfs":
- listVrfs = true;
- break;
- case "networks":
- listNets = true;
- break;
- default:
- session.getConsole().println("error: unknown value for " + LST + ": " + item);
- if (fileStream != null) {
- fileStream.close();
- }
- return null;
+ try {
+ if (ofile != null) {
+ try {
+ fileStream = new PrintStream(ofile);
+ ps = fileStream;
+ } catch (FileNotFoundException e) {
+ System.out.println("error: cannot create file " + ofile + "; exception: " + e);
+ return null;
}
}
- }
- // we'd normally read this directly from 'config' but
- // legacy behaviour forces to check for a connection
- // that's initiated by default at startup without
- // writing to config.
- String configHost = bgpManager.getConfigHost();
- int configPort = bgpManager.getConfigPort();
- ps.printf("%nConfiguration Server%n\t%s %s%n\t%s %d%n",
- HTSTR, configHost, PTSTR, configPort);
- Bgp config = bgpManager.getConfig();
- if (config == null) {
- if (fileStream != null) {
- fileStream.close();
+ if (list != null) {
+ for (String item : list) {
+ switch (item) {
+ case "vrfs":
+ listVrfs = true;
+ break;
+ case "networks":
+ listNets = true;
+ break;
+ default:
+ System.out.println("error: unknown value for " + LST + ": " + item);
+ if (fileStream != null) {
+ fileStream.close();
+ }
+ return null;
+ }
+ }
}
+ // we'd normally read this directly from 'config' but
+ // legacy behaviour forces to check for a connection
+ // that's initiated by default at startup without
+ // writing to config.
+ String configHost = bgpConfigurationManager.getConfigHost();
+ int configPort = bgpConfigurationManager.getConfigPort();
+ ps.printf("%nConfiguration Server%n\t%s %s%n\t%s %d%n",
+ HTSTR, configHost, PTSTR, configPort);
+ Bgp config = bgpConfigurationManager.getConfig();
+ if (config == null) {
+ if (fileStream != null) {
+ fileStream.close();
+ }
- return null;
- }
- AsId asId = config.getAsId();
- if (asId != null) {
- long asNum = asId.getLocalAs().longValue();
- IpAddress routerId = asId.getRouterId();
- Long spt = asId.getStalepathTime();
- Boolean afb = asId.isAnnounceFbit();
- String rid = routerId == null ? "<n/a>" : routerId.stringValue();
- //F-bit is always set to ON (hardcoded), in SDN even though the controller is down
- //forwarding state shall be retained.
- String bit = "ON";
+ return null;
+ }
+ AsId asId = config.getAsId();
+ if (asId != null) {
+ Long asNum = asId.getLocalAs().longValue();
+ IpAddress routerId = asId.getRouterId();
+ Long spt = asId.getStalepathTime().toJava();
+ Boolean afb = asId.isAnnounceFbit();
+ String rid = routerId == null ? "<n/a>" : routerId.stringValue();
+ //F-bit is always set to ON (hardcoded), in SDN even though the controller is down
+ //forwarding state shall be retained.
+ String bit = "ON";
- GracefulRestart gracefulRestart = config.getGracefulRestart();
- if (gracefulRestart != null) {
- spt = gracefulRestart.getStalepathTime();
+ GracefulRestart gracefulRestart = config.getGracefulRestart();
+ if (gracefulRestart != null) {
+ spt = gracefulRestart.getStalepathTime().toJava();
+ }
+ ps.printf("%nBGP Router%n");
+ ps.printf("\t%-15s %s%n\t%-15s %s%n\t%-15s %s%n\t%-15s %s%n",
+ ASSTR, asNum.toString(), RISTR, rid, SPSTR,
+ spt == null || spt == 0 ? "default" : spt.toString(), FBSTR, bit);
}
- ps.printf("%nBGP Router%n");
- ps.printf("\t%-15s %d%n\t%-15s %s%n\t%-15s %s%n\t%-15s %s%n",
- ASSTR, asNum, RISTR, rid, SPSTR, spt == null || spt == 0 ? "default" : spt.toString(), FBSTR,
- bit);
- }
- Logging logging = config.getLogging();
- if (logging != null) {
- ps.printf("\t%-15s %s%n\t%-15s %s%n", LFSTR, logging.getFile(),
- LLSTR, logging.getLevel());
- }
+ Logging logging = config.getLogging();
+ if (logging != null) {
+ ps.printf("\t%-15s %s%n\t%-15s %s%n", LFSTR, logging.getFile(),
+ LLSTR, logging.getLevel());
+ }
- List<Neighbors> neighbors = config.getNeighbors();
- if (neighbors != null) {
- ps.printf("%nNeighbors%n");
- for (Neighbors nbr : neighbors) {
- ps.printf("\t%s%n\t\t%-16s %d%n", nbr.getAddress().getValue(),
- ASSTR, nbr.getRemoteAs());
- EbgpMultihop en = nbr.getEbgpMultihop();
- if (en != null) {
- ps.printf("\t\t%-16s %d%n", EBSTR, en.getNhops().intValue());
- }
- UpdateSource us = nbr.getUpdateSource();
- if (us != null) {
- ps.printf("\t\t%-16s %s%n", USSTR, us.getSourceIp().getValue());
- }
- ps.printf("\t\t%-16s IPv4-Labeled-VPN", AFSTR);
- List<AddressFamilies> afs = nbr.getAddressFamilies();
- if (afs != null) {
- for (AddressFamilies af : afs) {
- // Should not print "unknown" in vpnv4 case
- if (!(af.getSafi().intValue() == 5 && af.getAfi().intValue() == 1)) {
- if (af.getSafi().intValue() == 4 && af.getAfi().intValue() == 1) {
- ps.printf(" %s", "IPv4-Labeled-Unicast");
- } else if (af.getSafi().intValue() == 5 && af.getAfi().intValue() == 2) {
- ps.printf(" %s", "IPv6-Labeled-VPN");
- } else if (af.getSafi().intValue() == 6) {
- ps.printf(" %s", "Ethernet-VPN");
- } else {
- ps.printf(" %s", "Unknown");
+ List<Neighbors> neighbors = config.getNeighbors();
+ if (neighbors != null) {
+ ps.printf("%nNeighbors%n");
+ for (Neighbors nbr : neighbors) {
+ ps.printf("\t%s%n\t\t%-16s %d%n", nbr.getAddress().getValue(),
+ ASSTR, nbr.getRemoteAs());
+ EbgpMultihop en = nbr.getEbgpMultihop();
+ if (en != null) {
+ ps.printf("\t\t%-16s %d%n", EBSTR, en.getNhops().intValue());
+ }
+ UpdateSource us = nbr.getUpdateSource();
+ if (us != null) {
+ ps.printf("\t\t%-16s %s%n", USSTR, us.getSourceIp().getValue());
+ }
+ ps.printf("\t\t%-16s IPv4-Labeled-VPN", AFSTR);
+ List<AddressFamilies> afs = nbr.getAddressFamilies();
+ if (afs != null) {
+ for (AddressFamilies af : afs) {
+ // Should not print "unknown" in vpnv4 case
+ if (!(af.getSafi().intValue() == 5 && af.getAfi().intValue() == 1)) {
+ if (af.getSafi().intValue() == 4 && af.getAfi().intValue() == 1) {
+ ps.printf(" %s", "IPv4-Labeled-Unicast");
+ } else if (af.getSafi().intValue() == 5 && af.getAfi().intValue() == 2) {
+ ps.printf(" %s", "IPv6-Labeled-VPN");
+ } else if (af.getSafi().intValue() == 6) {
+ ps.printf(" %s", "Ethernet-VPN");
+ } else {
+ ps.printf(" %s", "Unknown");
+ }
}
}
}
+ ps.printf("%n");
}
- ps.printf("%n");
}
- }
- if (listVrfs) {
- List<Vrfs> vrfs = config.getVrfs();
- if (vrfs != null) {
- ps.printf("%nVRFs%n");
- for (Vrfs vrf : vrfs) {
- ps.printf("\t%s%n", vrf.getRd());
- ps.printf("\t\t%s ", IRSTR);
- for (String rt : vrf.getImportRts()) {
- ps.printf("%s ", rt);
- }
- ps.printf("%n\t\t%s ", ERSTR);
- for (String rt : vrf.getExportRts()) {
- ps.printf("%s ", rt);
- }
- for (AddressFamiliesVrf adf : vrf.getAddressFamiliesVrf()) {
- ps.printf("%n\t\tafi %d safi %d", adf.getAfi(), adf.getSafi());
+ if (listVrfs) {
+ List<Vrfs> vrfs = config.getVrfs();
+ if (vrfs != null) {
+ ps.printf("%nVRFs%n");
+ for (Vrfs vrf : vrfs) {
+ ps.printf("\t%s%n", vrf.getRd());
+ ps.printf("\t\t%s ", IRSTR);
+ for (String rt : vrf.getImportRts()) {
+ ps.printf("%s ", rt);
+ }
+ ps.printf("%n\t\t%s ", ERSTR);
+ for (String rt : vrf.getExportRts()) {
+ ps.printf("%s ", rt);
+ }
+ for (AddressFamiliesVrf adf : vrf.getAddressFamiliesVrf()) {
+ ps.printf("%n\t\tafi %d safi %d", adf.getAfi(), adf.getSafi());
+ }
+ ps.printf("%n");
}
- ps.printf("%n");
}
}
- }
- if (listNets) {
- List<Networks> ln = config.getNetworks();
- if (ln != null) {
- ps.printf("%nNetworks%n");
- for (Networks net : ln) {
- String rd = net.getRd();
- String pfxlen = net.getPrefixLen();
- String nh = net.getNexthop().getValue();
- int label = net.getLabel().intValue();
- ps.printf("\t%s%n\t\t%-7s %s%n\t\t%-7s %s%n\t\t%-7s %d%n",
- pfxlen, RDSTR, rd, NHSTR, nh, LBSTR, label);
+ if (listNets) {
+ List<Networks> ln = config.getNetworks();
+ if (ln != null) {
+ ps.printf("%nNetworks%n");
+ for (Networks net : ln) {
+ String rd = net.getRd();
+ String pfxlen = net.getPrefixLen();
+ String nh = net.getNexthop().getValue();
+ int label = net.getLabel().intValue();
+ ps.printf("\t%s%n\t\t%-7s %s%n\t\t%-7s %s%n\t\t%-7s %d%n",
+ pfxlen, RDSTR, rd, NHSTR, nh, LBSTR, label);
+ }
}
}
- }
- List<Multipath> mp = config.getMultipath();
- List<VrfMaxpath> vrfm = config.getVrfMaxpath();
- if (mp != null) {
- ps.printf("%nMultipath%n");
- for (Multipath multipath : mp) {
- int afi = multipath.getAfi().intValue();
- int safi = multipath.getSafi().intValue();
- Boolean enabled = multipath.isMultipathEnabled();
- if (enabled) {
- if (afi == 1 && safi == 5) {
- ps.printf("\t%-16s %s%n%n", AFSTR, "vpnv4");
- } else if (afi == 2 && safi == 5) {
- ps.printf("\t%-16s %s%n%n", AFSTR, "vpnv6");
- } else if (afi == 3 && safi == 6) {
- ps.printf("\t%-16s %s%n%n", AFSTR, "evpn");
- } else {
- ps.printf("\t%-16s %s%n%n", AFSTR, "Unknown");
- }
- if (vrfm != null) {
- ps.printf("\t%-16s %s%n", RDSTR, MPSTR);
- for (VrfMaxpath vrfMaxpath : vrfm) {
- String rd = vrfMaxpath.getRd();
- int maxpath = vrfMaxpath.getMaxpaths();
- ps.printf("\t%-16s %d%n", rd, maxpath);
+ List<Multipath> mp = config.getMultipath();
+ List<VrfMaxpath> vrfm = config.getVrfMaxpath();
+ if (mp != null) {
+ ps.printf("%nMultipath%n");
+ for (Multipath multipath : mp) {
+ int afi = multipath.getAfi().intValue();
+ int safi = multipath.getSafi().intValue();
+ Boolean enabled = multipath.isMultipathEnabled();
+ if (enabled) {
+ if (afi == 1 && safi == 5) {
+ ps.printf("\t%-16s %s%n%n", AFSTR, "vpnv4");
+ } else if (afi == 2 && safi == 5) {
+ ps.printf("\t%-16s %s%n%n", AFSTR, "vpnv6");
+ } else if (afi == 3 && safi == 6) {
+ ps.printf("\t%-16s %s%n%n", AFSTR, "evpn");
+ } else {
+ ps.printf("\t%-16s %s%n%n", AFSTR, "Unknown");
+ }
+ if (vrfm != null) {
+ ps.printf("\t%-16s %s%n", RDSTR, MPSTR);
+ for (VrfMaxpath vrfMaxpath : vrfm) {
+ String rd = vrfMaxpath.getRd();
+ int maxpath = vrfMaxpath.getMaxpaths().toJava();
+ ps.printf("\t%-16s %d%n", rd, maxpath);
+ }
}
}
}
}
- }
- if (fileStream != null) {
- fileStream.close();
+ } finally {
+ if (fileStream != null) {
+ fileStream.close();
+ }
}
return null;
}