package org.opendaylight.openflowplugin.impl.util;
import java.net.InetSocketAddress;
-import java.util.Optional;
import java.util.concurrent.ExecutionException;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter;
import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
import org.opendaylight.openflowplugin.api.openflow.device.TxFacade;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsDataBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint8;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
for (int i = 0; i < nrOfTables; i++) {
+ final Uint8 tableId = Uint8.valueOf(i);
txFacade.writeToTransaction(LogicalDatastoreType.OPERATIONAL,
deviceInfo
.getNodeInstanceIdentifier()
.augmentation(FlowCapableNode.class)
- .child(Table.class, new TableKey((short) i)),
+ .child(Table.class, new TableKey(tableId)),
new TableBuilder()
- .setId((short) i)
- .addAugmentation(
- FlowTableStatisticsData.class,
- new FlowTableStatisticsDataBuilder().build())
+ .setId(tableId)
+ .addAugmentation(new FlowTableStatisticsDataBuilder().build())
.build());
}
}
public static IpAddress getIpAddress(final ConnectionContext connectionContext,
final InstanceIdentifier<Node> instanceIdentifier) {
final String node = PathUtil.extractNodeId(instanceIdentifier).getValue();
-
- return getRemoteAddress(connectionContext, instanceIdentifier)
- .map(inetSocketAddress -> {
- final IpAddress ipAddress = IetfInetUtil.INSTANCE.ipAddressFor(inetSocketAddress.getAddress());
- LOG.info("IP address of the node {} is: {}", node, ipAddress);
- return ipAddress;
- })
- .orElse(null);
+ final InetSocketAddress address = getRemoteAddress(connectionContext, instanceIdentifier);
+ if (address == null) {
+ return null;
+ }
+ final IpAddress ipAddress = IetfInetUtil.ipAddressFor(address.getAddress());
+ LOG.info("IP address of the node {} is: {}", node, ipAddress);
+ return ipAddress;
}
/**
public static PortNumber getPortNumber(final ConnectionContext connectionContext,
final InstanceIdentifier<Node> instanceIdentifier) {
final String node = PathUtil.extractNodeId(instanceIdentifier).getValue();
-
- return getRemoteAddress(connectionContext, instanceIdentifier)
- .map(inetSocketAddress -> {
- final int port = inetSocketAddress.getPort();
- LOG.info("Port number of the node {} is: {}", node, port);
- return new PortNumber(port);
- })
- .orElse(null);
-
+ final InetSocketAddress address = getRemoteAddress(connectionContext, instanceIdentifier);
+ if (address == null) {
+ return null;
+ }
+ final int port = address.getPort();
+ LOG.info("Port number of the node {} is: {}", node, port);
+ return new PortNumber(Uint16.valueOf(port));
}
/**
* @return switch features
*/
public static SwitchFeatures getSwitchFeatures(final ConnectionContext connectionContext) {
- return SwitchFeaturesUtil
- .getInstance()
- .buildSwitchFeatures(new GetFeaturesOutputBuilder(connectionContext
- .getFeatures())
- .build());
+ return SwitchFeaturesUtil.buildSwitchFeatures(new GetFeaturesOutputBuilder(connectionContext.getFeatures())
+ .build());
}
- private static Optional<InetSocketAddress> getRemoteAddress(final ConnectionContext connectionContext,
+ private static @Nullable InetSocketAddress getRemoteAddress(final ConnectionContext connectionContext,
final InstanceIdentifier<Node> instanceIdentifier) {
- final Optional<InetSocketAddress> inetSocketAddress = Optional
- .ofNullable(connectionContext.getConnectionAdapter())
- .flatMap(connectionAdapter -> Optional.ofNullable(connectionAdapter.getRemoteAddress()));
-
- if (!inetSocketAddress.isPresent()) {
- LOG.warn("Remote address of the node {} cannot be obtained. No connection with switch.", PathUtil
- .extractNodeId(instanceIdentifier));
+ final ConnectionAdapter adapter = connectionContext.getConnectionAdapter();
+ final InetSocketAddress remoteAddress = adapter == null ? null : adapter.getRemoteAddress();
+ if (remoteAddress == null) {
+ LOG.warn("Remote address of the node {} cannot be obtained. No connection with switch.",
+ PathUtil.extractNodeId(instanceIdentifier));
}
-
- return inetSocketAddress;
+ return remoteAddress;
}
-
}