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%2FNspConvertor.java;h=a685ccbce84a28b033f651695e0d7cb735745819;hb=a0543340afd14d8ab4aac0f6c13ddcbf8ec1c761;hp=e4a2333cc7e95282d5deb2c905894d3e983b8255;hpb=163b3dd5740b83123674df4a65f0de40860bb3e6;p=openflowplugin.git diff --git a/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/NspConvertor.java b/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/NspConvertor.java index e4a2333cc7..a685ccbce8 100644 --- a/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/NspConvertor.java +++ b/extension/openflowplugin-extension-nicira/src/main/java/org/opendaylight/openflowplugin/extension/vendor/nicira/convertor/match/NspConvertor.java @@ -5,28 +5,32 @@ * 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.extension.vendor.nicira.convertor.match; -import com.google.common.base.Optional; +import java.util.Optional; +import org.opendaylight.openflowjava.nx.api.NiciraConstants; import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava; import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava; import org.opendaylight.openflowplugin.extension.api.ExtensionAugment; import org.opendaylight.openflowplugin.extension.api.path.MatchPath; import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.CodecPreconditionException; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm1Class; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.experimenter.id.match.entry.ExperimenterIdCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.OfjAugNxExpMatch; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.aug.nx.exp.match.nx.exp.match.entry.value.NspCaseValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.aug.nx.exp.match.nx.exp.match.entry.value.NspCaseValueBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.nsp.grouping.NspValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.ofj.nxm.nx.match.nsp.grouping.NspValuesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.NspCaseValue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.oxm.container.match.entry.value.NspCaseValueBuilder; 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; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchRpcGetFlowStatsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNspGrouping; @@ -34,51 +38,62 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.nsp.grouping.NxmNxNsp; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.nsp.grouping.NxmNxNspBuilder; import org.opendaylight.yangtools.yang.binding.Augmentation; +import org.opendaylight.yangtools.yang.common.Uint32; public class NspConvertor implements ConvertorToOFJava, ConvertorFromOFJava { + + @Override + public ExtensionAugment> convert(final MatchEntry input, final MatchPath path) { + ExperimenterIdCase experimenterIdCase = (ExperimenterIdCase) input.getMatchEntryValue(); + OfjAugNxExpMatch ofjAugNxExpMatch = experimenterIdCase.augmentation(OfjAugNxExpMatch.class); + NspCaseValue nshNspCaseValue = (NspCaseValue) ofjAugNxExpMatch.getNxExpMatchEntryValue(); + + return resolveAugmentation( + new NxmNxNspBuilder().setValue(nshNspCaseValue.getNspValues().getNsp()).build(), + path, + NxmNxNspKey.VALUE); + } + @Override - public ExtensionAugment> convert(MatchEntry input, MatchPath path) { - NspCaseValue nspCaseValue = ((NspCaseValue) input.getMatchEntryValue()); + public MatchEntry convert(final Extension extension) { + Optional matchGrouping = MatchUtil.NSP_RESOLVER.findExtension(extension); + if (!matchGrouping.isPresent()) { + throw new CodecPreconditionException(extension); + } + Uint32 nspValue = matchGrouping.get().getNxmNxNsp().getValue(); + MatchEntry matchEntry = buildMatchEntry(nspValue, null); + return matchEntry; + } - return resolveAugmentation(new NxmNxNspBuilder().setValue(nspCaseValue.getNspValues().getNsp()).build(), path, - NxmNxNspKey.class); + public static MatchEntry buildMatchEntry(final Uint32 nsp, final Uint32 mask) { + NspValues nspValues = new NspValuesBuilder().setNsp(nsp).setMask(mask).build(); + NspCaseValue nspCaseValue = new NspCaseValueBuilder().setNspValues(nspValues).build(); + return MatchUtil.createExperimenterMatchEntryBuilder( + org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxNsp.VALUE, + NiciraConstants.NX_NSH_VENDOR_ID, + nspCaseValue).setHasMask(mask != null).build(); } - private static ExtensionAugment> resolveAugmentation(NxmNxNsp value, - MatchPath path, Class key) { + private static ExtensionAugment> resolveAugmentation(final NxmNxNsp value, + final MatchPath path, final ExtensionKey key) { switch (path) { - case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_MATCH: - return new ExtensionAugment<>(NxAugMatchNotifUpdateFlowStats.class, - new NxAugMatchNotifUpdateFlowStatsBuilder().setNxmNxNsp(value).build(), key); - case RPCFLOWSSTATISTICS_FLOWANDSTATISTICSMAPLIST_MATCH: + case FLOWS_STATISTICS_UPDATE_MATCH: + return new ExtensionAugment<>(NxAugMatchNodesNodeTableFlow.class, + new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxNsp(value).build(), key); + case FLOWS_STATISTICS_RPC_MATCH: return new ExtensionAugment<>(NxAugMatchRpcGetFlowStats.class, new NxAugMatchRpcGetFlowStatsBuilder().setNxmNxNsp(value).build(), key); - case PACKETRECEIVED_MATCH: + case PACKET_RECEIVED_MATCH: return new ExtensionAugment<>(NxAugMatchNotifPacketIn.class, new NxAugMatchNotifPacketInBuilder() .setNxmNxNsp(value).build(), key); - case SWITCHFLOWREMOVED_MATCH: + case SWITCH_FLOW_REMOVED_MATCH: return new ExtensionAugment<>(NxAugMatchNotifSwitchFlowRemoved.class, new NxAugMatchNotifSwitchFlowRemovedBuilder().setNxmNxNsp(value).build(), key); + case PACKET_IN_MESSAGE_MATCH: + return new ExtensionAugment<>(NxAugMatchPacketInMessage.class, + new NxAugMatchPacketInMessageBuilder().setNxmNxNsp(value).build(), key); default: throw new CodecPreconditionException(path); } } - - @Override - public MatchEntry convert(Extension extension) { - Optional matchGrouping = MatchUtil.nspResolver.getExtension(extension); - if (!matchGrouping.isPresent()) { - throw new CodecPreconditionException(extension); - } - Long value = matchGrouping.get().getNxmNxNsp().getValue(); - NspCaseValueBuilder nspCaseValueBuilder = new NspCaseValueBuilder(); - nspCaseValueBuilder.setNspValues(new NspValuesBuilder() - .setNsp(value).build()); - - - return MatchUtil.createDefaultMatchEntryBuilder(org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxNsp.class, - Nxm1Class.class, - nspCaseValueBuilder.build()).build(); - } - }