X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=extension%2Fopenflowplugin-extension-nicira%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fextension%2Fvendor%2Fnicira%2Fconvertor%2Fmatch%2FRegConvertor.java;h=07e19202b747af63fe01a3f457c65b2a23ba6ca3;hb=2fdde79d3bc5b5e2e54992e3c4b8c52e9131a48f;hp=92f2f5a55db7ca214f66bd7bb63f02d6dd2af849;hpb=314c4eabb9443cb5e482bbea75239ca82587c8b9;p=openflowplugin.git diff --git a/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/RegConvertor.java b/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/RegConvertor.java index 92f2f5a55d..07e19202b7 100644 --- a/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/RegConvertor.java +++ b/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/RegConvertor.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,8 +7,7 @@ */ package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.match; -import com.google.common.base.Optional; -import java.util.Objects; +import java.util.Optional; import org.opendaylight.openflowjava.nx.codec.match.NiciraMatchCodecs; import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava; import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava; @@ -23,12 +22,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.RegCaseValueBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlowBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketIn; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifPacketInBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifSwitchFlowRemovedBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStats; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNotifUpdateFlowStatsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchPacketInMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchPacketInMessageBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcGetFlowStats; @@ -49,20 +48,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** + * Convert to/from SAL flow model to openflowjava model for NxmNxReg. + * * @author msunal */ public class RegConvertor implements ConvertorToOFJava, ConvertorFromOFJava { - private final static Logger LOG = LoggerFactory.getLogger(RegConvertor.class); + private static final Logger LOG = LoggerFactory.getLogger(RegConvertor.class); - /* - * (non-Javadoc) - * - * @see - * org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava#convert - * (org.opendaylight.yangtools.yang.binding.DataContainer, - * org.opendaylight.openflowplugin.extension.api.path.AugmentationPath) - */ @SuppressWarnings("unchecked") @Override public ExtensionAugment> convert(MatchEntry input, MatchPath path) { @@ -72,13 +65,12 @@ public class RegConvertor implements ConvertorToOFJava, ConvertorFro String msg = input.getOxmMatchField() + " does not implement " + org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg.class; - LOG.warn(msg); + LOG.warn("Warning {}",msg); throw new IllegalStateException(msg); } - nxRegBuilder - .setReg((Class) input - .getOxmMatchField()); - RegCaseValue regCaseValue = ((RegCaseValue) input.getMatchEntryValue()); + nxRegBuilder.setReg((Class) input.getOxmMatchField()); + RegCaseValue regCaseValue = (RegCaseValue) input.getMatchEntryValue(); nxRegBuilder.setValue(regCaseValue.getRegValues().getValue()); if (input.isHasMask()) { @@ -88,6 +80,26 @@ public class RegConvertor implements ConvertorToOFJava, ConvertorFro return resolveAugmentation(nxRegBuilder.build(), path, resolveRegKey(input.getOxmMatchField())); } + @Override + public MatchEntry convert(Extension extension) { + Optional matchGrouping = MatchUtil.REG_RESOLVER.findExtension(extension); + if (!matchGrouping.isPresent()) { + throw new CodecPreconditionException(extension); + } + NxmNxReg nxmNxReg = matchGrouping.get().getNxmNxReg(); + RegValuesBuilder regValuesBuilder = new RegValuesBuilder() + .setValue(nxmNxReg.getValue()) + .setMask(nxmNxReg.getMask()); + + RegCaseValueBuilder regCaseValueBuilder = new RegCaseValueBuilder(); + regCaseValueBuilder.setRegValues(regValuesBuilder.build()); + return MatchUtil.createDefaultMatchEntryBuilder(nxmNxReg.getReg(), + Nxm1Class.class, + regCaseValueBuilder.build()) + .setHasMask(nxmNxReg.getMask() != null) + .build(); + } + private static Class resolveRegKey(Class oxmMatchField) { if (NiciraMatchCodecs.REG0_CODEC.getNxmField().isAssignableFrom(oxmMatchField)) { return NxmNxReg0Key.class; @@ -117,55 +129,25 @@ public class RegConvertor implements ConvertorToOFJava, ConvertorFro } private static ExtensionAugment> resolveAugmentation(NxmNxReg nxmNxReg, - MatchPath path, Class key) { + MatchPath path, Class key) { switch (path) { - case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_MATCH: - return new ExtensionAugment<>(NxAugMatchNotifUpdateFlowStats.class, - new NxAugMatchNotifUpdateFlowStatsBuilder().setNxmNxReg(nxmNxReg).build(), key); - case RPCFLOWSSTATISTICS_FLOWANDSTATISTICSMAPLIST_MATCH: + case FLOWS_STATISTICS_UPDATE_MATCH: + return new ExtensionAugment<>(NxAugMatchNodesNodeTableFlow.class, + new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg(nxmNxReg).build(), key); + case FLOWS_STATISTICS_RPC_MATCH: return new ExtensionAugment<>(NxAugMatchRpcGetFlowStats.class, new NxAugMatchRpcGetFlowStatsBuilder().setNxmNxReg(nxmNxReg).build(), key); - case PACKETRECEIVED_MATCH: + case PACKET_RECEIVED_MATCH: return new ExtensionAugment<>(NxAugMatchNotifPacketIn.class, new NxAugMatchNotifPacketInBuilder() .setNxmNxReg(nxmNxReg).build(), key); - case SWITCHFLOWREMOVED_MATCH: + case SWITCH_FLOW_REMOVED_MATCH: return new ExtensionAugment<>(NxAugMatchNotifSwitchFlowRemoved.class, new NxAugMatchNotifSwitchFlowRemovedBuilder().setNxmNxReg(nxmNxReg).build(), key); - case PACKETINMESSAGE_MATCH: + case PACKET_IN_MESSAGE_MATCH: return new ExtensionAugment<>(NxAugMatchPacketInMessage.class, new NxAugMatchPacketInMessageBuilder().setNxmNxReg(nxmNxReg).build(), key); default: throw new CodecPreconditionException(path); } } - - /* - * (non-Javadoc) - * - * @see - * org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava#convert - * (org - * .opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general - * .rev140714.general.extension.grouping.Extension) - */ - @Override - public MatchEntry convert(Extension extension) { - Optional matchGrouping = MatchUtil.regResolver.getExtension(extension); - if (!matchGrouping.isPresent()) { - throw new CodecPreconditionException(extension); - } - NxmNxReg nxmNxReg = matchGrouping.get().getNxmNxReg(); - RegValuesBuilder regValuesBuilder = new RegValuesBuilder() - .setValue(nxmNxReg.getValue()) - .setMask(nxmNxReg.getMask()); - - RegCaseValueBuilder regCaseValueBuilder = new RegCaseValueBuilder(); - regCaseValueBuilder.setRegValues(regValuesBuilder.build()); - return MatchUtil.createDefaultMatchEntryBuilder(nxmNxReg.getReg(), - Nxm1Class.class, - regCaseValueBuilder.build()) - .setHasMask(Objects.nonNull(nxmNxReg.getMask())) - .build(); - } - }