void showTeps(CommandSession session);
- void showState(Collection<StateTunnelList> tunnels, CommandSession session);
+ void showState(Collection<StateTunnelList> tunnels);
void showCache(String cacheName);
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
</dependency>
<dependency>
<groupId>org.apache.karaf.shell</groupId>
- <artifactId>org.apache.karaf.shell.console</artifactId>
+ <artifactId>org.apache.karaf.shell.core</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
- </dependency>
+ </dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<groupId>org.eclipse.xtend</groupId>
<artifactId>xtend-maven-plugin</artifactId>
</plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Karaf-Commands>org.opendaylight.genius.itm.cli*</Karaf-Commands>
+ </instructions>
+ </configuration>
+ </plugin>
</plugins>
</build>
-
</project>
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.ops4j.pax.cdi.api.OsgiServiceProvider;
/**
* Caches StateTunnelList objects.
* @author Thomas Pantelis
*/
@Singleton
+@OsgiServiceProvider(classes = TunnelStateCache.class) // only because TepShowState needs a @Reference to this
public class TunnelStateCache extends InstanceIdDataObjectCache<StateTunnelList> {
@Inject
import org.slf4j.LoggerFactory;
@Singleton
+@SuppressWarnings("checkstyle:RegexpSingleLineJava")
public class TepCommandHelper {
private static final Logger LOG = LoggerFactory.getLogger(TepCommandHelper.class);
try {
ipAddressObj = IpAddressBuilder.getDefaultInstance(ipAddress);
gatewayIpObj = IpAddressBuilder.getDefaultInstance("0.0.0.0");
- if ((gatewayIp != null) && !gatewayIp.isEmpty()
- && !("null".equals(gatewayIp)) || ("0.0.0.0".equals(gatewayIp))) {
+ if (gatewayIp != null && !gatewayIp.isEmpty()
+ && !"null".equals(gatewayIp) || "0.0.0.0".equals(gatewayIp)) {
gatewayIpObj = IpAddressBuilder.getDefaultInstance(gatewayIp);
} else {
LOG.debug("gateway is null");
gatewayIp = null;
}
} catch (RuntimeException e) {
- handleError("Invalid IpAddress. Expected: 1.0.0.0 to 254.255.255.255", session);
+ handleError("Invalid IpAddress. Expected: 1.0.0.0 to 254.255.255.255");
return;
}
try {
subnetMaskObj = IpPrefixBuilder.getDefaultInstance(subnetMask);
} catch (Exception e) {
- handleError("Invalid Subnet Mask. Expected: 0.0.0.0/0 to 255.255.255.255/32", session);
+ handleError("Invalid Subnet Mask. Expected: 0.0.0.0/0 to 255.255.255.255/32");
return;
}
if (!validateIPs(ipAddress, subnetMask, gatewayIp)) {
- handleError("IpAddress and gateWayIp should belong to the subnet provided", session);
+ handleError("IpAddress and gateWayIp should belong to the subnet provided");
return;
}
if (transportZonesOptional.isPresent()) {
TransportZones transportZones = transportZonesOptional.get();
if (transportZones.getTransportZone() == null || transportZones.getTransportZone().isEmpty()) {
- handleError("No teps configured", session);
+ handleError("No teps configured");
return;
}
List<String> result = new ArrayList<>();
try {
ipAddressObj = IpAddressBuilder.getDefaultInstance(ipAddress);
gatewayIpObj = IpAddressBuilder.getDefaultInstance("0.0.0.0");
- if (!("null".equals(gatewayIp)) || ("0.0.0.0".equals(gatewayIp)) && (gatewayIp != null)) {
+ if (!"null".equals(gatewayIp) || "0.0.0.0".equals(gatewayIp) && gatewayIp != null) {
gatewayIpObj = IpAddressBuilder.getDefaultInstance(gatewayIp);
} else {
LOG.debug("gateway is null");
gatewayIp = null;
}
} catch (RuntimeException e) {
- handleError("Invalid IpAddress. Expected: 1.0.0.0 to 254.255.255.255", session);
+ handleError("Invalid IpAddress. Expected: 1.0.0.0 to 254.255.255.255");
return;
}
try {
subnetMaskObj = IpPrefixBuilder.getDefaultInstance(subnetMask);
} catch (Exception e) {
- handleError("Invalid Subnet Mask. Expected: 0.0.0.0/0 to 255.255.255.255/32", session);
+ handleError("Invalid Subnet Mask. Expected: 0.0.0.0/0 to 255.255.255.255/32");
return;
}
if (!validateIPs(ipAddress, subnetMask, gatewayIp)) {
- handleError("IpAddress and gateWayIp should belong to the subnet provided", session);
+ handleError("IpAddress and gateWayIp should belong to the subnet provided");
return;
}
SubnetsKey subnetsKey = new SubnetsKey(subnetMaskObj);
}
@SuppressWarnings("checkstyle:RegexpSinglelineJava")
- public void showState(Collection<StateTunnelList> tunnelLists, boolean tunnelMonitorEnabled,
- CommandSession session) throws TepException {
+ public void showState(Collection<StateTunnelList> tunnelLists, boolean tunnelMonitorEnabled) throws TepException {
if (tunnelLists == null || tunnelLists.isEmpty()) {
- handleError("No Internal Tunnels Exist", session);
+ handleError("No Internal Tunnels Exist");
return;
}
if (!tunnelMonitorEnabled) {
- if (session != null) {
- session.getConsole().println("Tunnel Monitoring is Off");
- }
+ System.out.println("Tunnel Monitoring is Off");
}
String displayFormat = "%-16s %-16s %-16s %-16s %-16s %-10s %-10s";
System.out.println(String.format(displayFormat, "Tunnel Name", "Source-DPN",
}
}
- public void handleError(String errorMessage, CommandSession session) throws TepException {
- if (session != null) {
- session.getConsole().println(errorMessage);
- } else {
- throw new TepException(errorMessage);
- }
-
+ public void handleError(String errorMessage) throws TepException {
+ throw new TepException(errorMessage);
}
}
package org.opendaylight.genius.itm.cli;
import java.util.Collection;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Reference;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
import org.opendaylight.genius.itm.api.IITMProvider;
import org.opendaylight.genius.itm.cache.TunnelStateCache;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
+@Service
@Command(scope = "tep", name = "show-state", description = "Monitors tunnel state")
+public class TepShowState implements Action {
-public class TepShowState extends OsgiCommandSupport {
-
- private final IITMProvider itmProvider;
- private final TunnelStateCache tunnelStateCache;
-
- public TepShowState(IITMProvider itmProvider, TunnelStateCache tunnelStateCache) {
- this.itmProvider = itmProvider;
- this.tunnelStateCache = tunnelStateCache;
- }
+ private @Reference IITMProvider itmProvider;
+ private @Reference TunnelStateCache tunnelStateCache;
@Override
- protected Object doExecute() {
+ @SuppressWarnings("checkstyle:RegexpSingleLineJava")
+ public Object execute() throws Exception {
Collection<StateTunnelList> tunnels = tunnelStateCache.getAllPresent();
if (!tunnels.isEmpty()) {
- itmProvider.showState(tunnels, session);
+ itmProvider.showState(tunnels);
} else {
- session.getConsole().println("No Internal Tunnels configured on the switch");
+ System.out.println("No Internal Tunnels configured on the switch");
}
return null;
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInputBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.ops4j.pax.cdi.api.OsgiServiceProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
+@OsgiServiceProvider
public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateService */ {
private static final Logger LOG = LoggerFactory.getLogger(ItmProvider.class);
}
@Override
- public void showState(Collection<StateTunnelList> tunnels,CommandSession session) {
+ public void showState(Collection<StateTunnelList> tunnels) {
if (tunnels != null) {
try {
- tepCommandHelper.showState(tunnels, tunnelMonitoringConfig.isTunnelMonitoringEnabled(), session);
+ tepCommandHelper.showState(tunnels, tunnelMonitoringConfig.isTunnelMonitoringEnabled());
} catch (TepException e) {
LOG.error("show state failed", e);
}
@Override
public boolean validateIP(final String ip) {
- if ((ip == null) || ip.isEmpty() || "null".equals(ip) || "0.0.0.0".equals(ip)) {
+ if (ip == null || ip.isEmpty() || "null".equals(ip) || "0.0.0.0".equals(ip)) {
return false;
}
final String PTRN =
<odl:rpc-implementation ref="itmManagerRpcService" />
- <service ref="itmProvider"
- interface="org.opendaylight.genius.itm.api.IITMProvider" />
-
<odl:clustered-app-config id="itmConfig"
binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfig"
default-config-file-name="genius-itm-config.xml"
<property name="itmProvider" ref="itmProvider" />
</action>
</command>
- <command>
- <action class="org.opendaylight.genius.itm.cli.TepShowState">
- <argument ref="itmProvider" />
- <argument ref="tunnelStateCache" />
- </action>
- </command>
<command>
<action class="org.opendaylight.genius.itm.cli.TepConfigureTunnelType">
<property name="itmProvider" ref="itmProvider" />