import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.reply.multipart.reply.body.MultipartReplyPortStatsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.reply.multipart.reply.body.MultipartReplyQueueStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.multipart.reply.multipart.reply.body.MultipartReplyQueueStatsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapBuilder;
MultipartReplyPortStatsCase caseBody = (MultipartReplyPortStatsCase) msg.getMultipartReplyBody();
MultipartReplyPortStats replyBody = caseBody.getMultipartReplyPortStats();
- List<NodeConnectorStatisticsAndPortNumberMap> statsMap = new ArrayList<>();
+ final var statsMap = BindingMap.<NodeConnectorStatisticsAndPortNumberMapKey,
+ NodeConnectorStatisticsAndPortNumberMap>orderedBuilder();
for (PortStats portStats : replyBody.nonnullPortStats()) {
final DurationBuilder durationBuilder = new DurationBuilder();
if (portStats.getDurationSec() != null) {
}
return new MultipartReplyPortStatsBuilder()
- .setNodeConnectorStatisticsAndPortNumberMap(statsMap)
+ .setNodeConnectorStatisticsAndPortNumberMap(statsMap.build())
.build();
}
*/
package org.opendaylight.openflowplugin.impl.protocol.deserialization.match;
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint16;
+
import io.netty.buffer.ByteBuf;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
public class ArpOpEntryDeserializer extends AbstractMatchEntryDeserializer {
@Override
- public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+ public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
processHeader(message);
final Layer3Match layer3Match = builder.getLayer3Match();
- final int arpOp = message.readUnsignedShort();
+ final Uint16 arpOp = readUint16(message);
if (layer3Match == null) {
builder.setLayer3Match(new ArpMatchBuilder()
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
public class VlanVidEntryDeserializer extends AbstractMatchEntryDeserializer {
@Override
- public void deserializeEntry(ByteBuf message, MatchBuilder builder) {
+ public void deserializeEntry(final ByteBuf message, final MatchBuilder builder) {
final boolean hasMask = processHeader(message);
final VlanIdBuilder vlanIdBuilder = new VlanIdBuilder();
final int vlanVidValue = message.readUnsignedShort();
if (hasMask) {
message.skipBytes(Short.BYTES); // Skip mask
vlanIdBuilder
- .setVlanId(new VlanId(0))
+ .setVlanId(new VlanId(Uint16.ZERO))
.setVlanIdPresent(true);
} else {
final boolean vidPresent = (vlanVidValue & 1 << 12) != 0;
vlanIdBuilder
- .setVlanId(new VlanId(vidPresent ? vlanVidValue & (1 << 12) - 1 : vlanVidValue))
+ .setVlanId(new VlanId(Uint16.valueOf(vidPresent ? vlanVidValue & (1 << 12) - 1 : vlanVidValue)))
.setVlanIdPresent(vidPresent);
}
import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint8;
import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
-import java.util.List;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.reply.MultipartReplyBody;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
public class MultipartReplyMeterConfigDeserializer implements OFDeserializer<MultipartReplyBody>,
DeserializerRegistryInjector {
@Override
public MultipartReplyBody deserialize(final ByteBuf message) {
final MultipartReplyMeterConfigBuilder builder = new MultipartReplyMeterConfigBuilder();
- final List<MeterConfigStats> items = new ArrayList<>();
+ final var items = BindingMap.<MeterConfigStatsKey, MeterConfigStats>orderedBuilder();
while (message.readableBytes() > 0) {
final int itemLength = message.readUnsignedShort();
.setFlags(readMeterFlags(message))
.setMeterId(new MeterId(readUint32(message)));
- final List<MeterBandHeader> subItems = new ArrayList<>();
+ final var subItems = BindingMap.<MeterBandHeaderKey, MeterBandHeader>orderedBuilder();
int actualLength = METER_CONFIG_LENGTH;
long bandKey = 0;
items.add(itemBuilder
.withKey(new MeterConfigStatsKey(itemBuilder.getMeterId()))
.setMeterBandHeaders(new MeterBandHeadersBuilder()
- .setMeterBandHeader(subItems)
+ .setMeterBandHeader(subItems.build())
.build())
.build());
}
return builder
- .setMeterConfigStats(items)
+ .setMeterConfigStats(items.build())
.build();
}
@Override
public MultipartReplyBody deserialize(final ByteBuf message) {
final MultipartReplyTableFeaturesBuilder builder = new MultipartReplyTableFeaturesBuilder();
- final List<TableFeatures> items = new ArrayList<>();
+ final var items = BindingMap.<TableFeaturesKey, TableFeatures>orderedBuilder();
while (message.readableBytes() > 0) {
final int itemLength = message.readUnsignedShort();
- final TableFeaturesBuilder itemBuilder = new TableFeaturesBuilder()
- .setTableId(readUint8(message));
+ final Uint8 tableId = readUint8(message);
message.skipBytes(PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES);
- items.add(itemBuilder
- .withKey(new TableFeaturesKey(itemBuilder.getTableId()))
+ items.add(new TableFeaturesBuilder()
+ .setTableId(tableId)
.setName(ByteBufUtils.decodeNullTerminatedString(message, MAX_TABLE_NAME_LENGTH))
.setMetadataMatch(readUint64(message))
.setMetadataWrite(readUint64(message))
}
return builder
- .setTableFeatures(items)
+ .setTableFeatures(items.build())
.build();
}
}
private TableProperties readTableProperties(final ByteBuf message, final int length) {
- final List<TableFeatureProperties> items = new ArrayList<>();
+ final var items = BindingMap.<TableFeaturePropertiesKey, TableFeatureProperties>orderedBuilder();
int tableFeaturesLength = length;
int order = 0;
while (tableFeaturesLength > 0) {
tableFeaturesLength -= propertyLength;
final int commonPropertyLength = propertyLength - COMMON_PROPERTY_LENGTH;
final TableFeaturePropertiesBuilder propBuilder = new TableFeaturePropertiesBuilder()
- .setOrder(order)
- .withKey(new TableFeaturePropertiesKey(order));
+ .setOrder(order++);
switch (propType) {
case OFPTFPTINSTRUCTIONS:
}
items.add(propBuilder.build());
- order++;
}
return new TablePropertiesBuilder()
- .setTableFeatureProperties(items)
+ .setTableFeatureProperties(items.build())
.build();
}
while (message.readerIndex() - startIndex < length) {
try {
instructions.add(new InstructionBuilder()
- .withKey(new InstructionKey(offset))
.setOrder(offset)
.setInstruction(InstructionUtil
.readInstructionHeader(EncodeConstants.OF13_VERSION_ID, message, registry))
offset++;
} catch (ClassCastException | IllegalStateException e) {
+ // FIXME: what are we guarding here?
message.skipBytes(2 * Short.BYTES);
}
}
return instructions.build();
}
- @SuppressWarnings("checkstyle:LineLength")
private Map<ActionKey, Action> readActions(final ByteBuf message, final int length) {
final var actions = BindingMap.<ActionKey, Action>orderedBuilder();
final int startIndex = message.readerIndex();
while (message.readerIndex() - startIndex < length) {
try {
actions.add(new ActionBuilder()
- .withKey(new ActionKey(offset))
.setOrder(offset)
.setAction(ActionUtil.readActionHeader(EncodeConstants.OF13_VERSION_ID, message, registry,
ActionPath.FLOWS_STATISTICS_UPDATE_APPLY_ACTIONS))
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
public class SetTpDstActionSerializer extends AbstractSetFieldActionSerializer {
@Override
switch (proto) {
case ICMP: {
builder.setIcmpv4Match(new Icmpv4MatchBuilder()
- .setIcmpv4Code((short) (0xFF & port.getValue().toJava()))
+ .setIcmpv4Code(Uint8.valueOf(0xFF & port.getValue().toJava()))
.build());
break;
}
case ICMPV6: {
builder.setIcmpv6Match(new Icmpv6MatchBuilder()
- .setIcmpv6Code((short) (0xFF & port.getValue().toJava()))
+ .setIcmpv6Code(Uint8.valueOf(0xFF & port.getValue().toJava()))
.build());
break;
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
+import org.opendaylight.yangtools.yang.common.Uint8;
public class SetTpSrcActionSerializer extends AbstractSetFieldActionSerializer {
@Override
switch (proto) {
case ICMP: {
builder.setIcmpv4Match(new Icmpv4MatchBuilder()
- .setIcmpv4Type((short) (0xFF & port.getValue().toJava()))
+ .setIcmpv4Type(Uint8.valueOf(0xFF & port.getValue().toJava()))
.build());
break;
}
case ICMPV6: {
builder.setIcmpv6Match(new Icmpv6MatchBuilder()
- .setIcmpv6Type((short) (0xFF & port.getValue().toJava()))
+ .setIcmpv6Type(Uint8.valueOf(0xFF & port.getValue().toJava()))
.build());
break;
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.protocol.serialization.actions;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
public class StripVlanActionSerializer extends AbstractSetFieldActionSerializer {
@Override
- protected SetFieldCase buildAction(Action input) {
+ protected SetFieldCase buildAction(final Action input) {
return new SetFieldCaseBuilder()
- .setSetField(new SetFieldBuilder()
- .setVlanMatch(new VlanMatchBuilder()
- .setVlanId(new VlanIdBuilder()
- .setVlanIdPresent(true)
- .setVlanId(new VlanId(0x0000))
- .build())
- .build())
+ .setSetField(new SetFieldBuilder()
+ .setVlanMatch(new VlanMatchBuilder()
+ .setVlanId(new VlanIdBuilder()
+ .setVlanIdPresent(true)
+ .setVlanId(new VlanId(Uint16.ZERO))
.build())
- .build();
+ .build())
+ .build())
+ .build();
}
-
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.services;
-import java.util.List;
+import java.util.Map;
import java.util.concurrent.Future;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.TableUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesKey;
import org.opendaylight.yangtools.yang.common.RpcResult;
public abstract class AbstractTableMultipartService<T extends OfHeader>
/**
* Stores table features to operational datastore.
*/
- protected void storeStatistics(List<org.opendaylight.yang.gen.v1.urn
- .opendaylight.table.types.rev131026.table.features.TableFeatures> result) {
+ protected void storeStatistics(final Map<TableFeaturesKey, TableFeatures> result) {
multipartWriterProvider
.lookup(MultipartType.OFPMPTABLEFEATURES)
.ifPresent(writer -> {
- writer.write(
- new TableUpdatedBuilder()
- .setTableFeatures(result)
- .build(),
- false);
-
+ writer.write(new TableUpdatedBuilder().setTableFeatures(result).build(), false);
getTxFacade().submitTransaction();
});
}
* @return experimenter output
*/
public abstract Future<RpcResult<UpdateTableOutput>> handleAndReply(UpdateTableInput input);
-
}
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
return finalFuture;
}
- protected List<org.opendaylight.yang.gen.v1.urn
- .opendaylight.table.types.rev131026.table.features.TableFeatures> convertToSalTableFeatures(
- final List<MultipartReply> multipartReplies) {
- final List<org.opendaylight.yang.gen.v1.urn
- .opendaylight.table.types.rev131026.table.features.TableFeatures> salTableFeaturesAll =
- new ArrayList<>();
+ protected Map<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesKey,
+ org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures>
+ convertToSalTableFeatures(final List<MultipartReply> multipartReplies) {
+ final var salTableFeaturesAll = BindingMap.<
+ org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesKey,
+ org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures>
+ orderedBuilder();
for (final MultipartReply multipartReply : multipartReplies) {
if (multipartReply.getType().equals(MultipartType.OFPMPTABLEFEATURES)) {
final MultipartReplyBody multipartReplyBody = multipartReply.getMultipartReplyBody();
}
}
- return salTableFeaturesAll;
+ return salTableFeaturesAll.build();
}
}
import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import java.util.List;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.reply.multipart.reply.body.MultipartReplyTableFeatures;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.request.multipart.request.body.MultipartRequestTableFeaturesBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
.flatMap(multipartReplyBody -> ((MultipartReplyTableFeatures) multipartReplyBody)
.nonnullTableFeatures().values()
.stream())
- .collect(Collectors.toList()));
+ .collect(BindingMap.toOrderedMap()));
} catch (Exception e) {
LOG.warn("Not able to write to operational datastore: {}", e.getMessage());
}
*/
package org.opendaylight.openflowplugin.impl.statistics.services;
-import com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Optional;
-import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
-import java.util.stream.Collectors;
import org.opendaylight.openflowjava.protocol.api.util.BinContent;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigStatsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigStatsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Meter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
final class AllMeterConfigStatsService
extends AbstractCompatibleStatService<GetAllMeterConfigStatisticsInput,
private final ConvertorExecutor convertorExecutor;
private final VersionConvertorData data;
- AllMeterConfigStatsService(RequestContextStack requestContextStack,
- DeviceContext deviceContext,
- AtomicLong compatibilityXidSeed,
- ConvertorExecutor convertorExecutor) {
+ AllMeterConfigStatsService(final RequestContextStack requestContextStack,
+ final DeviceContext deviceContext,
+ final AtomicLong compatibilityXidSeed,
+ final ConvertorExecutor convertorExecutor) {
super(requestContextStack, deviceContext, compatibilityXidSeed);
this.convertorExecutor = convertorExecutor;
data = new VersionConvertorData(getVersion());
}
@Override
- public GetAllMeterConfigStatisticsOutput buildTxCapableResult(TransactionId emulatedTxId) {
+ public GetAllMeterConfigStatisticsOutput buildTxCapableResult(final TransactionId emulatedTxId) {
return new GetAllMeterConfigStatisticsOutputBuilder().setTransactionId(emulatedTxId).build();
}
@Override
- public MeterConfigStatsUpdated transformToNotification(List<MultipartReply> result, TransactionId emulatedTxId) {
- MeterConfigStatsUpdatedBuilder message = new MeterConfigStatsUpdatedBuilder();
- message.setId(getDeviceInfo().getNodeId());
- message.setMoreReplies(Boolean.FALSE);
- message.setTransactionId(emulatedTxId);
-
- message.setMeterConfigStats(new ArrayList<>());
+ public MeterConfigStatsUpdated transformToNotification(final List<MultipartReply> result,
+ final TransactionId emulatedTxId) {
+ final var stats = BindingMap.<MeterConfigStatsKey, MeterConfigStats>orderedBuilder();
for (MultipartReply mpReply : result) {
MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase) mpReply.getMultipartReplyBody();
MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig();
final Optional<List<MeterConfigStats>> meterConfigStatsList =
convertorExecutor.convert(replyBody.getMeterConfig(), data);
-
- meterConfigStatsList.ifPresent(meterConfigStats -> {
- if (message.getMeterConfigStats() == null) {
- message.setMeterConfigStats(Lists.newArrayList(meterConfigStats));
- } else {
- Set<MeterConfigStats> stats = new HashSet<>(message.getMeterConfigStats().values());
- stats.addAll(meterConfigStats);
- message.setMeterConfigStats(stats.stream().collect(Collectors.toList()));
- }
- });
+ meterConfigStatsList.ifPresent(stats::addAll);
}
- return message.build();
+ return new MeterConfigStatsUpdatedBuilder()
+ .setId(getDeviceInfo().getNodeId())
+ .setMoreReplies(Boolean.FALSE)
+ .setTransactionId(emulatedTxId)
+ .setMeterConfigStats(stats.build())
+ .build();
}
}
*/
package org.opendaylight.openflowplugin.impl.statistics.services;
-import com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Optional;
-import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.desc.stats.reply.GroupDescStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.desc.stats.reply.GroupDescStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc._case.MultipartReplyGroupDesc;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCaseBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
final class GroupDescriptionService
extends AbstractCompatibleStatService<GetGroupDescriptionInput,
new MultipartRequestGroupDescCaseBuilder().build();
private final ConvertorExecutor convertorExecutor;
- GroupDescriptionService(RequestContextStack requestContextStack,
- DeviceContext deviceContext,
- AtomicLong compatibilityXidSeed,
- ConvertorExecutor convertorExecutor) {
+ GroupDescriptionService(final RequestContextStack requestContextStack,
+ final DeviceContext deviceContext,
+ final AtomicLong compatibilityXidSeed,
+ final ConvertorExecutor convertorExecutor) {
super(requestContextStack, deviceContext, compatibilityXidSeed);
this.convertorExecutor = convertorExecutor;
}
}
@Override
- public GetGroupDescriptionOutput buildTxCapableResult(TransactionId emulatedTxId) {
+ public GetGroupDescriptionOutput buildTxCapableResult(final TransactionId emulatedTxId) {
return new GetGroupDescriptionOutputBuilder().setTransactionId(emulatedTxId).build();
}
@Override
- public GroupDescStatsUpdated transformToNotification(List<MultipartReply> result, TransactionId emulatedTxId) {
- GroupDescStatsUpdatedBuilder notification = new GroupDescStatsUpdatedBuilder();
- notification.setId(getDeviceInfo().getNodeId());
- notification.setMoreReplies(Boolean.FALSE);
- notification.setTransactionId(emulatedTxId);
-
- notification.setGroupDescStats(new ArrayList<>());
+ public GroupDescStatsUpdated transformToNotification(final List<MultipartReply> result,
+ final TransactionId emulatedTxId) {
final VersionConvertorData data = new VersionConvertorData(getVersion());
+ final var stats = BindingMap.<GroupDescStatsKey, GroupDescStats>orderedBuilder();
for (MultipartReply mpReply : result) {
MultipartReplyGroupDescCase caseBody = (MultipartReplyGroupDescCase) mpReply.getMultipartReplyBody();
MultipartReplyGroupDesc replyBody = caseBody.getMultipartReplyGroupDesc();
final Optional<List<GroupDescStats>> groupDescStatsList = convertorExecutor.convert(
replyBody.getGroupDesc(), data);
- groupDescStatsList.ifPresent(groupDescStats -> {
- if (notification.getGroupDescStats() == null) {
- List<GroupDescStats> stats = Lists.newArrayList(groupDescStats);
- notification.setGroupDescStats(stats);
- } else {
- Set<GroupDescStats> stats = new HashSet<>(notification.getGroupDescStats().values());
- stats.addAll(groupDescStats);
- notification.setGroupDescStats(stats.stream().collect(Collectors.toList()));
- }
- });
-
-
+ groupDescStatsList.ifPresent(stats::addAll);
}
- return notification.build();
+ return new GroupDescStatsUpdatedBuilder()
+ .setId(getDeviceInfo().getNodeId())
+ .setMoreReplies(Boolean.FALSE)
+ .setTransactionId(emulatedTxId)
+ .setGroupDescStats(stats.build())
+ .build();
}
}
package org.opendaylight.openflowplugin.impl.statistics.services.compatibility;
-import com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply.GroupStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.MultipartReplyGroup;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
/**
* Pulled out group stats to notification transformation.
final DeviceInfo deviceInfo,
final TransactionId emulatedTxId,
final ConvertorExecutor convertorExecutor) {
-
VersionConvertorData data = new VersionConvertorData(deviceInfo.getVersion());
- GroupStatisticsUpdatedBuilder notification = new GroupStatisticsUpdatedBuilder();
- notification.setId(deviceInfo.getNodeId());
- notification.setMoreReplies(Boolean.FALSE);
- notification.setTransactionId(emulatedTxId);
-
- notification.setGroupStats(new ArrayList<>());
-
+ final var stats = BindingMap.<GroupStatsKey, GroupStats>orderedBuilder();
for (MultipartReply mpReply : mpReplyList) {
MultipartReplyGroupCase caseBody = (MultipartReplyGroupCase) mpReply.getMultipartReplyBody();
MultipartReplyGroup replyBody = caseBody.getMultipartReplyGroup();
final Optional<List<GroupStats>> groupStatsList = convertorExecutor.convert(
replyBody.getGroupStats(), data);
- groupStatsList.ifPresent(groupStats -> {
- if (notification.getGroupStats() == null) {
- List<GroupStats> stats = Lists.newArrayList(groupStats);
- notification.setGroupStats(stats);
- } else {
- Set<GroupStats> stats = new HashSet<>(notification.getGroupStats().values());
- stats.addAll(groupStats);
- notification.setGroupStats(stats.stream().collect(Collectors.toList()));
- }
- });
+ groupStatsList.ifPresent(stats::addAll);
}
- return notification.build();
+
+ return new GroupStatisticsUpdatedBuilder()
+ .setId(deviceInfo.getNodeId())
+ .setMoreReplies(Boolean.FALSE)
+ .setTransactionId(emulatedTxId)
+ .setGroupStats(stats.build())
+ .build();
}
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.statistics.services.compatibility;
-import com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyMeterCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.MultipartReplyMeter;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
/**
* Pulled out meter stats to notification transformation.
final ConvertorExecutor convertorExecutor) {
VersionConvertorData data = new VersionConvertorData(deviceInfo.getVersion());
- MeterStatisticsUpdatedBuilder notification = new MeterStatisticsUpdatedBuilder();
- notification.setId(deviceInfo.getNodeId());
- notification.setMoreReplies(Boolean.FALSE);
- notification.setTransactionId(emulatedTxId);
-
- notification.setMeterStats(new ArrayList<>());
+ final var stats = BindingMap.<MeterStatsKey, MeterStats>orderedBuilder();
for (MultipartReply mpReply : mpReplyList) {
MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody();
MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter();
final Optional<List<MeterStats>> meterStatsList =
convertorExecutor.convert(replyBody.getMeterStats(), data);
- meterStatsList.ifPresent(meterStats -> {
- if (notification.getMeterStats() == null) {
- notification.setMeterStats(Lists.newArrayList(meterStats));
- } else {
- Set<MeterStats> stats = new HashSet<>(notification.getMeterStats().values());
- stats.addAll(meterStats);
- notification.setMeterStats(stats.stream().collect(Collectors.toList()));
- }
- });
+ meterStatsList.ifPresent(stats::addAll);
}
- return notification.build();
+ return new MeterStatisticsUpdatedBuilder()
+ .setId(deviceInfo.getNodeId())
+ .setMoreReplies(Boolean.FALSE)
+ .setTransactionId(emulatedTxId)
+ .setMeterStats(stats.build())
+ .build();
}
}
package org.opendaylight.openflowplugin.impl.statistics.services.compatibility;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMapKey;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
/**
* Pulled out port stats to notification transformation.
final DeviceInfo deviceInfo,
final OpenflowVersion ofVersion,
final TransactionId emulatedTxId) {
-
- NodeConnectorStatisticsUpdateBuilder notification = new NodeConnectorStatisticsUpdateBuilder();
- notification.setId(deviceInfo.getNodeId());
- notification.setMoreReplies(Boolean.FALSE);
- notification.setTransactionId(emulatedTxId);
-
- notification
- .setNodeConnectorStatisticsAndPortNumberMap(new ArrayList<>());
+ final var stats = BindingMap.<NodeConnectorStatisticsAndPortNumberMapKey,
+ NodeConnectorStatisticsAndPortNumberMap>orderedBuilder();
for (MultipartReply mpReply : mpReplyList) {
MultipartReplyPortStatsCase caseBody = (MultipartReplyPortStatsCase) mpReply.getMultipartReplyBody();
MultipartReplyPortStats replyBody = caseBody.getMultipartReplyPortStats();
for (PortStats portStats : replyBody.getPortStats()) {
- NodeConnectorStatisticsAndPortNumberMapBuilder statsBuilder =
- processSingleNodeConnectorStats(deviceInfo, ofVersion, portStats);
- if (notification.getNodeConnectorStatisticsAndPortNumberMap() != null) {
- Set<NodeConnectorStatisticsAndPortNumberMap> stats
- = new HashSet<>(notification.getNodeConnectorStatisticsAndPortNumberMap().values());
- stats.add(statsBuilder.build());
- notification.setNodeConnectorStatisticsAndPortNumberMap(
- stats.stream().collect(Collectors.toList()));
- } else {
- notification.setNodeConnectorStatisticsAndPortNumberMap(Lists.newArrayList(statsBuilder.build()));
- }
+ stats.add(processSingleNodeConnectorStats(deviceInfo, ofVersion, portStats).build());
}
}
- return notification.build();
+ return new NodeConnectorStatisticsUpdateBuilder()
+ .setId(deviceInfo.getNodeId())
+ .setMoreReplies(Boolean.FALSE)
+ .setTransactionId(emulatedTxId)
+ .setNodeConnectorStatisticsAndPortNumberMap(stats.build())
+ .build();
}
@VisibleForTesting
- static NodeConnectorStatisticsAndPortNumberMapBuilder processSingleNodeConnectorStats(DeviceInfo deviceInfo,
- OpenflowVersion ofVersion,
- PortStats portStats) {
- NodeConnectorStatisticsAndPortNumberMapBuilder statsBuilder =
- new NodeConnectorStatisticsAndPortNumberMapBuilder();
- statsBuilder.setNodeConnectorId(
- InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(
- deviceInfo.getDatapathId(),
- portStats.getPortNo(), ofVersion));
-
- BytesBuilder bytesBuilder = new BytesBuilder();
- bytesBuilder.setReceived(portStats.getRxBytes());
- bytesBuilder.setTransmitted(portStats.getTxBytes());
- statsBuilder.setBytes(bytesBuilder.build());
-
- PacketsBuilder packetsBuilder = new PacketsBuilder();
- packetsBuilder.setReceived(portStats.getRxPackets());
- packetsBuilder.setTransmitted(portStats.getTxPackets());
- statsBuilder.setPackets(packetsBuilder.build());
-
+ static NodeConnectorStatisticsAndPortNumberMapBuilder processSingleNodeConnectorStats(final DeviceInfo deviceInfo,
+ final OpenflowVersion ofVersion, final PortStats portStats) {
DurationBuilder durationBuilder = new DurationBuilder();
if (portStats.getDurationSec() != null) {
durationBuilder.setSecond(new Counter32(portStats.getDurationSec()));
if (portStats.getDurationNsec() != null) {
durationBuilder.setNanosecond(new Counter32(portStats.getDurationNsec()));
}
- statsBuilder.setDuration(durationBuilder.build());
- statsBuilder.setCollisionCount(portStats.getCollisions());
- statsBuilder.withKey(new NodeConnectorStatisticsAndPortNumberMapKey(statsBuilder.getNodeConnectorId()));
- statsBuilder.setReceiveCrcError(portStats.getRxCrcErr());
- statsBuilder.setReceiveDrops(portStats.getRxDropped());
- statsBuilder.setReceiveErrors(portStats.getRxErrors());
- statsBuilder.setReceiveFrameError(portStats.getRxFrameErr());
- statsBuilder.setReceiveOverRunError(portStats.getRxOverErr());
- statsBuilder.setTransmitDrops(portStats.getTxDropped());
- statsBuilder.setTransmitErrors(portStats.getTxErrors());
- return statsBuilder;
+
+ return new NodeConnectorStatisticsAndPortNumberMapBuilder()
+ .setNodeConnectorId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(deviceInfo.getDatapathId(),
+ portStats.getPortNo(), ofVersion))
+ .setBytes(new BytesBuilder()
+ .setReceived(portStats.getRxBytes())
+ .setTransmitted(portStats.getTxBytes())
+ .build())
+ .setPackets(new PacketsBuilder()
+ .setReceived(portStats.getRxPackets())
+ .setTransmitted(portStats.getTxPackets()).build())
+ .setDuration(durationBuilder.build())
+ .setCollisionCount(portStats.getCollisions())
+ .setReceiveCrcError(portStats.getRxCrcErr())
+ .setReceiveDrops(portStats.getRxDropped())
+ .setReceiveErrors(portStats.getRxErrors())
+ .setReceiveFrameError(portStats.getRxFrameErr())
+ .setReceiveOverRunError(portStats.getRxOverErr())
+ .setTransmitDrops(portStats.getTxDropped())
+ .setTransmitErrors(portStats.getTxErrors());
}
}
package org.opendaylight.openflowplugin.impl.statistics.services.compatibility;
-import com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.QueueStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.queue.id.and.statistics.map.QueueIdAndStatisticsMapKey;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
/**
* Pulled out queue stats to notification transformation.
final DeviceInfo deviceInfo,
final OpenflowVersion ofVersion,
final TransactionId emulatedTxId) {
-
- QueueStatisticsUpdateBuilder notification = new QueueStatisticsUpdateBuilder();
- notification.setId(deviceInfo.getNodeId());
- notification.setMoreReplies(Boolean.FALSE);
- notification.setTransactionId(emulatedTxId);
-
- notification.setQueueIdAndStatisticsMap(new ArrayList<>());
+ final var stats = BindingMap.<QueueIdAndStatisticsMapKey, QueueIdAndStatisticsMap>orderedBuilder();
for (MultipartReply mpReply : mpReplyList) {
-
MultipartReplyQueueCase caseBody = (MultipartReplyQueueCase) mpReply.getMultipartReplyBody();
MultipartReplyQueue replyBody = caseBody.getMultipartReplyQueue();
for (QueueStats queueStats : replyBody.getQueueStats()) {
-
- QueueIdAndStatisticsMapBuilder statsBuilder =
- new QueueIdAndStatisticsMapBuilder();
- statsBuilder.setNodeConnectorId(
- InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(
- deviceInfo.getDatapathId(),
- queueStats.getPortNo(), ofVersion));
- statsBuilder.setTransmissionErrors(new Counter64(queueStats.getTxErrors()));
- statsBuilder.setTransmittedBytes(new Counter64(queueStats.getTxBytes()));
- statsBuilder.setTransmittedPackets(new Counter64(queueStats.getTxPackets()));
-
- DurationBuilder durationBuilder = new DurationBuilder();
- durationBuilder.setSecond(new Counter32(queueStats.getDurationSec()));
- durationBuilder.setNanosecond(new Counter32(queueStats.getDurationNsec()));
- statsBuilder.setDuration(durationBuilder.build());
-
- statsBuilder.setQueueId(new QueueId(queueStats.getQueueId()));
-
- if (notification.getQueueIdAndStatisticsMap() == null) {
- notification.setQueueIdAndStatisticsMap(Lists.newArrayList(statsBuilder.build()));
- } else {
- Set<QueueIdAndStatisticsMap> stats
- = new HashSet<>(notification.getQueueIdAndStatisticsMap().values());
- stats.add(statsBuilder.build());
- notification.setQueueIdAndStatisticsMap(stats.stream().collect(Collectors.toList()));
- }
+ stats.add(new QueueIdAndStatisticsMapBuilder()
+ .setNodeConnectorId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(
+ deviceInfo.getDatapathId(), queueStats.getPortNo(), ofVersion))
+ .setTransmissionErrors(new Counter64(queueStats.getTxErrors()))
+ .setTransmittedBytes(new Counter64(queueStats.getTxBytes()))
+ .setTransmittedPackets(new Counter64(queueStats.getTxPackets()))
+ .setDuration(new DurationBuilder()
+ .setSecond(new Counter32(queueStats.getDurationSec()))
+ .setNanosecond(new Counter32(queueStats.getDurationNsec())).build())
+ .setQueueId(new QueueId(queueStats.getQueueId()))
+ .build());
}
}
- return notification.build();
+ return new QueueStatisticsUpdateBuilder()
+ .setId(deviceInfo.getNodeId())
+ .setMoreReplies(Boolean.FALSE)
+ .setTransactionId(emulatedTxId)
+ .setQueueIdAndStatisticsMap(stats.build())
+ .build();
}
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.statistics.services.direct.multilayer;
-import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.MultipartReplyMeter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
public class MeterDirectStatisticsService extends AbstractMeterDirectStatisticsService<MultipartReply> {
}
@Override
- protected GetMeterStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
- final List<MeterStats> meterStats = new ArrayList<>();
+ protected GetMeterStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+ final var meterStats = BindingMap.<MeterStatsKey, MeterStats>orderedBuilder();
if (success) {
for (final MultipartReply mpReply : input) {
}
return new GetMeterStatisticsOutputBuilder()
- .setMeterStats(meterStats)
+ .setMeterStats(meterStats.build())
.build();
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.statistics.services.direct.singlelayer;
import java.util.List;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartRequestBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
public class GroupDirectStatisticsService extends AbstractGroupDirectStatisticsService<MultipartReply> {
}
@Override
- protected GetGroupStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
+ protected GetGroupStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+ final var map = input.stream()
+ .flatMap(multipartReply -> ((MultipartReplyGroupStats) multipartReply.getMultipartReplyBody())
+ .nonnullGroupStats().values().stream())
+ .collect(BindingMap.toOrderedMap());
+
return new GetGroupStatisticsOutputBuilder()
- .setGroupStats(input
- .stream()
- .flatMap(multipartReply -> ((MultipartReplyGroupStats) multipartReply.getMultipartReplyBody())
- .nonnullGroupStats().values()
- .stream())
- .collect(Collectors.toList()))
+ .setGroupStats(map)
.build();
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.statistics.services.direct.singlelayer;
import java.util.List;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartReply;
import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartRequestBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
public class MeterDirectStatisticsService extends AbstractMeterDirectStatisticsService<MultipartReply> {
}
@Override
- protected GetMeterStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
- return new GetMeterStatisticsOutputBuilder()
- .setMeterStats(input
- .stream()
- .flatMap(multipartReply -> ((MultipartReplyMeterStats) multipartReply.getMultipartReplyBody())
- .nonnullMeterStats().values()
- .stream())
- .collect(Collectors.toList()))
+ protected GetMeterStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+ final var map = input.stream()
+ .flatMap(multipartReply -> ((MultipartReplyMeterStats) multipartReply.getMultipartReplyBody())
+ .nonnullMeterStats().values().stream())
+ .collect(BindingMap.toOrderedMap());
+
+ return new GetMeterStatisticsOutputBuilder()
+ .setMeterStats(map)
.build();
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.openflowplugin.impl.statistics.services.direct.singlelayer;
import java.util.List;
-import java.util.stream.Collectors;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.reply.multipart.reply.body.MultipartReplyPortStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.request.multipart.request.body.MultipartRequestPortStatsBuilder;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
public class PortDirectStatisticsService extends AbstractPortDirectStatisticsService<MultipartReply> {
}
@Override
- protected GetNodeConnectorStatisticsOutput buildReply(List<MultipartReply> input, boolean success) {
- return new GetNodeConnectorStatisticsOutputBuilder()
- .setNodeConnectorStatisticsAndPortNumberMap(input
- .stream()
- .flatMap(multipartReply -> ((MultipartReplyPortStats) multipartReply.getMultipartReplyBody())
- .nonnullNodeConnectorStatisticsAndPortNumberMap()
- .values().stream())
- .collect(Collectors.toList()))
+ protected GetNodeConnectorStatisticsOutput buildReply(final List<MultipartReply> input, final boolean success) {
+ final var map = input.stream()
+ .flatMap(multipartReply -> ((MultipartReplyPortStats) multipartReply.getMultipartReplyBody())
+ .nonnullNodeConnectorStatisticsAndPortNumberMap().values().stream())
+ .collect(BindingMap.toOrderedMap());
+
+ return new GetNodeConnectorStatisticsOutputBuilder()
+ .setNodeConnectorStatisticsAndPortNumberMap(map)
.build();
}
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)
+ .setId(tableId)
.addAugmentation(new FlowTableStatisticsDataBuilder().build())
.build());
}
}
final int port = address.getPort();
LOG.info("Port number of the node {} is: {}", node, port);
- return new PortNumber(port);
+ return new PortNumber(Uint16.valueOf(port));
}
/**
import java.util.Collection;
import java.util.EnumSet;
import java.util.List;
+import java.util.Map;
import org.opendaylight.openflowplugin.impl.services.batch.BatchPlanStep;
import org.opendaylight.openflowplugin.impl.services.batch.BatchStepType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutput;
final boolean status) {
return RpcResultBuilder.<ProcessFlatBatchOutput>status(status)
.withRpcErrors(new ArrayList<>())
- .withResult(new ProcessFlatBatchOutputBuilder()
- .setBatchFailure(new ArrayList<>())
- .build())
+ .withResult(new ProcessFlatBatchOutputBuilder().setBatchFailure(Map.of()).build())
.buildFuture();
}
}