From 50c3b5e41ce355dd4603a79004f2980a2f7cb5f1 Mon Sep 17 00:00:00 2001 From: Madhu Venugopal Date: Mon, 11 Aug 2014 13:51:40 -0700 Subject: [PATCH] Introducing Openflow NX Extension infrastructure and NX_RESUBMIT action in ovsdb project - This infrastruture will make use of the openflowplugin's extension infrastructure to add to the Extensibility tree. - Few of the NX actions and matches will be introduced here and ideally all the NX actions should reside in a OVS friendly place. - NX_RESUBMIT and NX_RESUBMIT_TABLE codec are added and the appropriate action type will be used based on the data passed by the application - Fixed Distribution to make use of this infra. Change-Id: Ibdc634afe7704c9a4890a952ddb4bff5ef066610 Signed-off-by: Madhu Venugopal --- commons/parent/pom.xml | 73 +++++++++ distribution/opendaylight/pom.xml | 51 ++++--- .../opendaylight/src/assemble/bin.xml | 7 - .../initial/42-openflowplugin.xml | 124 --------------- of-extension/nx-ofjava/pom.xml | 127 ++++++++++++++++ .../ofjava/NiciraExtensionsRegistrator.java | 42 ++++++ .../ovs/nx/ofjava/NiciraMatchCodecs.java | 12 ++ .../codec/action/NiciraActionCodecs.java | 13 ++ .../nx/ofjava/codec/action/ResubmitCodec.java | 81 ++++++++++ .../NiciraExtensionApiProviderModule.java | 34 +++++ ...ciraExtensionApiProviderModuleFactory.java | 22 +++ .../NiciraExtensionProviderModule.java | 35 +++++ .../NiciraExtensionProviderModuleFactory.java | 22 +++ .../initial/50-ovs-nx-api-config.xml | 38 +++++ .../resources/initial/51-ovs-nx-config.xml | 24 +++ .../src/main/yang/ovs-nx-action.yang | 42 ++++++ .../src/main/yang/ovs-nx-api-config.yang | 42 ++++++ .../src/main/yang/ovs-nx-config.yang | 36 +++++ .../nx-ofjava/src/main/yang/ovs-nx-match.yang | 18 +++ of-extension/nx-sal/pom.xml | 141 +++++++++++++++++ .../ovs/nx/sal/NiciraExtensionProvider.java | 90 +++++++++++ .../nx/sal/convertor/action/ActionUtil.java | 45 ++++++ .../convertor/action/ResubmitConvertor.java | 76 ++++++++++ ...igurableNiciraExtensionProviderModule.java | 38 +++++ ...eNiciraExtensionProviderModuleFactory.java | 13 ++ .../initial/52-ovs-nx-sal-config.xml | 27 ++++ .../src/main/yang/ovs-nx-sal-action.yang | 142 ++++++++++++++++++ .../src/main/yang/ovs-nx-sal-cfg-impl.yang | 38 +++++ .../nx-sal/src/main/yang/ovs-nx-sal-cfg.yang | 20 +++ .../src/main/yang/ovs-nx-sal-match.yang | 13 ++ pom.xml | 2 + 31 files changed, 1338 insertions(+), 150 deletions(-) delete mode 100644 distribution/opendaylight/src/main/resources/configuration/initial/42-openflowplugin.xml create mode 100644 of-extension/nx-ofjava/pom.xml create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraExtensionsRegistrator.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraMatchCodecs.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/NiciraActionCodecs.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/ResubmitCodec.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModule.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModuleFactory.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModule.java create mode 100644 of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModuleFactory.java create mode 100644 of-extension/nx-ofjava/src/main/resources/initial/50-ovs-nx-api-config.xml create mode 100644 of-extension/nx-ofjava/src/main/resources/initial/51-ovs-nx-config.xml create mode 100644 of-extension/nx-ofjava/src/main/yang/ovs-nx-action.yang create mode 100644 of-extension/nx-ofjava/src/main/yang/ovs-nx-api-config.yang create mode 100644 of-extension/nx-ofjava/src/main/yang/ovs-nx-config.yang create mode 100644 of-extension/nx-ofjava/src/main/yang/ovs-nx-match.yang create mode 100644 of-extension/nx-sal/pom.xml create mode 100644 of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/NiciraExtensionProvider.java create mode 100644 of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ActionUtil.java create mode 100644 of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ResubmitConvertor.java create mode 100644 of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModule.java create mode 100644 of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModuleFactory.java create mode 100644 of-extension/nx-sal/src/main/resources/initial/52-ovs-nx-sal-config.xml create mode 100644 of-extension/nx-sal/src/main/yang/ovs-nx-sal-action.yang create mode 100644 of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg-impl.yang create mode 100644 of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg.yang create mode 100644 of-extension/nx-sal/src/main/yang/ovs-nx-sal-match.yang diff --git a/commons/parent/pom.xml b/commons/parent/pom.xml index 2e7805d5f..035497713 100755 --- a/commons/parent/pom.xml +++ b/commons/parent/pom.xml @@ -31,6 +31,7 @@ 0.6.0-SNAPSHOT 1.0.0-SNAPSHOT 1.0.0-SNAPSHOT + 1.0.0-SNAPSHOT true true @@ -52,6 +53,13 @@ 0.1.2-SNAPSHOT 0.0.3-SNAPSHOT 1.1-SNAPSHOT + 0.0.3-SNAPSHOT + 0.0.3-SNAPSHOT + 0.0.3-SNAPSHOT + 0.0.3-SNAPSHOT + 0.0.3-SNAPSHOT + 0.5-SNAPSHOT + 0.2.5-SNAPSHOT 0.7.1-SNAPSHOT 0.6.2-SNAPSHOT 0.4.2-SNAPSHOT @@ -150,6 +158,11 @@ model-flow-base ${mdsal.version} + + org.opendaylight.controller.model + model-flow-statistics + ${mdsal.version} + org.opendaylight.controller.model model-flow-service @@ -170,6 +183,56 @@ commons.northbound ${northbound.commons.version} + + org.opendaylight.controller + config-api + ${controller.config.version} + + + org.opendaylight.openflowjava + openflow-protocol-api + ${openflowjava.version} + + + org.opendaylight.openflowjava + openflow-protocol-spi + ${openflowjava.version} + + + org.opendaylight.openflowjava + openflow-protocol-impl + ${openflowjava.version} + + + org.opendaylight.openflowjava + util + ${openflowjava.version} + + + org.opendaylight.openflowplugin + openflowjava-extension-nicira-api + ${openflowjava-nicira.version} + + + org.opendaylight.openflowplugin + openflowjava-extension-nicira + ${openflowjava-nicira.version} + + + org.opendaylight.openflowplugin + openflowplugin-extension-api + ${openflowplugin-extension.version} + + + org.opendaylight.openflowplugin + openflowplugin-extension-nicira + ${openflowplugin-nicira.version} + + + org.opendaylight.openflowplugin + openflowplugin + ${openflowplugin.version} + org.opendaylight.ovsdb library @@ -210,6 +273,16 @@ plugin-mdsal-adapter ${ovsdb.plugin.version} + + org.opendaylight.ovsdb + of-extension.nx-ofjava + ${ovsdb.ofextension.version} + + + org.opendaylight.ovsdb + of-extension.nx-sal + ${ovsdb.ofextension.version} + diff --git a/distribution/opendaylight/pom.xml b/distribution/opendaylight/pom.xml index 83c4b65b8..6a0d7249c 100755 --- a/distribution/opendaylight/pom.xml +++ b/distribution/opendaylight/pom.xml @@ -85,6 +85,16 @@ see https://git.opendaylight.org/gerrit/#/c/390/ openflowplugin-controller-config ${openflowplugin.version} + + org.opendaylight.ovsdb + of-extension.nx-ofjava + 1.0.0-SNAPSHOT + + + org.opendaylight.ovsdb + of-extension.nx-sal + 1.0.0-SNAPSHOT + org.opendaylight.ovsdb library @@ -138,23 +148,6 @@ see https://git.opendaylight.org/gerrit/#/c/390/ - - maven-assembly-plugin - - - distro-assembly - - single - - package - - - src/assemble/bin.xml - - - - - org.apache.maven.plugins maven-dependency-plugin @@ -181,14 +174,34 @@ see https://git.opendaylight.org/gerrit/#/c/390/ generate-resources - ${project.build.directory}/provided-configs - openflowplugin-controller-config + ${project.build.directory}/generated-resources/opendaylight/configuration + + openflowplugin-controller-config, test-extension, openflowjava-extension-nicira, openflowjava-extension-nicira-api, openflowplugin-extension-nicira, + of-extension.nx-ofjava, of-extension.nx-sal + **\/*.xml true false + + + maven-assembly-plugin + + + distro-assembly + + single + + package + + + src/assemble/bin.xml + + + + diff --git a/distribution/opendaylight/src/assemble/bin.xml b/distribution/opendaylight/src/assemble/bin.xml index 44e2edfe0..a392baf26 100644 --- a/distribution/opendaylight/src/assemble/bin.xml +++ b/distribution/opendaylight/src/assemble/bin.xml @@ -25,13 +25,6 @@ opendaylight/ - - ${project.build.directory}/provided-configs/initial - /opendaylight/configuration/initial.available - - **/META-INF/** - - diff --git a/distribution/opendaylight/src/main/resources/configuration/initial/42-openflowplugin.xml b/distribution/opendaylight/src/main/resources/configuration/initial/42-openflowplugin.xml deleted file mode 100644 index a8ec1ba9d..000000000 --- a/distribution/opendaylight/src/main/resources/configuration/initial/42-openflowplugin.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider:impl?module=openflow-switch-connection-provider-impl&revision=2014-03-28 - urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider?module=openflow-switch-connection-provider&revision=2014-03-28 - - urn:opendaylight:params:xml:ns:yang:openflow:common:config:impl?module=openflow-provider-impl&revision=2014-03-26 - urn:opendaylight:params:xml:ns:yang:openflow:common:config?module=openflow-provider&revision=2014-03-26 - - - - - - - - - - prefix:openflow-switch-connection-provider-impl - openflow-switch-connection-provider-default-impl - 6633 - 15000 - - - - - - prefix:openflow-switch-connection-provider-impl - openflow-switch-connection-provider-legacy-impl - 6653 - 15000 - - - - - - - prefix:openflow-provider-impl - openflow-provider-impl - - - ofSwitch:openflow-switch-connection-provider - openflow-switch-connection-provider-default - - - ofSwitch:openflow-switch-connection-provider - openflow-switch-connection-provider-legacy - - - - - binding:binding-broker-osgi-registry - binding-osgi-broker - - - - - - - prefix:openflow-switch-connection-provider - - openflow-switch-connection-provider-default - /modules/module[type='openflow-switch-connection-provider-impl'][name='openflow-switch-connection-provider-default-impl'] - - - openflow-switch-connection-provider-legacy - /modules/module[type='openflow-switch-connection-provider-impl'][name='openflow-switch-connection-provider-legacy-impl'] - - - - - prefix:openflow-provider - - openflow-provider - /modules/module[type='openflow-provider-impl'][name='openflow-provider-impl'] - - - - - - - diff --git a/of-extension/nx-ofjava/pom.xml b/of-extension/nx-ofjava/pom.xml new file mode 100644 index 000000000..f8cacbb20 --- /dev/null +++ b/of-extension/nx-ofjava/pom.xml @@ -0,0 +1,127 @@ + + + + commons + org.opendaylight.ovsdb + 1.2.0-SNAPSHOT + ../../commons/parent + + 4.0.0 + + of-extension.nx-ofjava + ${ovsdb.ofextension.version} + bundle + Opendaylight OVS NX Extensions for OpenflowJava Flow Models + + + + org.opendaylight.controller + config-api + + + org.opendaylight.openflowjava + openflow-protocol-api + + + org.opendaylight.openflowjava + openflow-protocol-spi + + + org.opendaylight.openflowjava + util + + + org.opendaylight.openflowplugin + openflowjava-extension-nicira-api + + + org.opendaylight.openflowplugin + openflowjava-extension-nicira + + + io.netty + netty-buffer + + + junit + junit + test + + + org.slf4j + slf4j-log4j12 + + + + + + + org.apache.felix + maven-bundle-plugin + 2.3.6 + true + + + org.opendaylight.yangtools + yang-maven-plugin + + + + generate-sources + + + + + + org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator + + ${project.build.directory}/generated-sources/config + + + urn:opendaylight:params:xml:ns:yang:controller:config==org.opendaylight.controller.config.yang + + + + + + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl + + ${project.build.directory}/generated-sources/sal + + + org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl + ${project.build.directory}/site/models + + + true + + + + + + org.opendaylight.controller + yang-jmx-generator-plugin + ${controller.config.version} + + + org.opendaylight.yangtools + maven-sal-api-gen-plugin + ${yangtools.version} + jar + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + + + diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraExtensionsRegistrator.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraExtensionsRegistrator.java new file mode 100644 index 000000000..94fc1d1a0 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraExtensionsRegistrator.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.ovs.nx.ofjava; +import org.opendaylight.openflowjava.nx.api.NiciraExtensionCodecRegistrator; +import org.opendaylight.ovs.nx.ofjava.codec.action.NiciraActionCodecs; +import org.opendaylight.ovs.nx.ofjava.codec.action.ResubmitCodec; + +import com.google.common.base.Preconditions; + +public class NiciraExtensionsRegistrator implements AutoCloseable { + + private final NiciraExtensionCodecRegistrator registrator; + public NiciraExtensionsRegistrator(NiciraExtensionCodecRegistrator registrator) { + Preconditions.checkNotNull(registrator); + this.registrator = registrator; + } + + public void registerNiciraExtensions() { + registrator.registerActionDeserializer(ResubmitCodec.RESUBMIT_DESERIALIZER_KEY, NiciraActionCodecs.RESUBMIT_CODEC); + registrator.registerActionDeserializer(ResubmitCodec.RESUBMIT_TABLE_DESERIALIZER_KEY, NiciraActionCodecs.RESUBMIT_CODEC); + registrator.registerActionSerializer(ResubmitCodec.SERIALIZER_KEY, NiciraActionCodecs.RESUBMIT_CODEC); + } + + public void unregisterExtensions() { + registrator.unregisterActionDeserializer(ResubmitCodec.RESUBMIT_DESERIALIZER_KEY); + registrator.unregisterActionDeserializer(ResubmitCodec.RESUBMIT_TABLE_DESERIALIZER_KEY); + registrator.unregisterActionSerializer(ResubmitCodec.SERIALIZER_KEY); + } + + @Override + public void close() throws Exception { + unregisterExtensions(); + } + +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraMatchCodecs.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraMatchCodecs.java new file mode 100644 index 000000000..79ccf6410 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/NiciraMatchCodecs.java @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.ovs.nx.ofjava; +public class NiciraMatchCodecs { +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/NiciraActionCodecs.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/NiciraActionCodecs.java new file mode 100644 index 000000000..29208cb4f --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/NiciraActionCodecs.java @@ -0,0 +1,13 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.ovs.nx.ofjava.codec.action; +public class NiciraActionCodecs { + public static final ResubmitCodec RESUBMIT_CODEC = new ResubmitCodec(); +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/ResubmitCodec.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/ResubmitCodec.java new file mode 100644 index 000000000..99cb2b099 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/ovs/nx/ofjava/codec/action/ResubmitCodec.java @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ + +package org.opendaylight.ovs.nx.ofjava.codec.action; + +import io.netty.buffer.ByteBuf; + +import org.opendaylight.openflowjava.nx.api.NiciraActionDeserializerKey; +import org.opendaylight.openflowjava.nx.api.NiciraActionSerializerKey; +import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdAction; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder; +import org.opendaylight.openflowjava.nx.codec.action.AbstractActionCodec; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.NxmNxResubmit; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.OfjAugNxAction; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.OfjAugNxActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.ofj.nx.action.resubmit.grouping.ActionResubmit; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.ofj.nx.action.resubmit.grouping.ActionResubmitBuilder; + +/** + * Codec for the NX_RESUBMIT and NX_RESUBMIT_TABLE + */ +public class ResubmitCodec extends AbstractActionCodec { + public static final int LENGTH = 16; + public static final byte NXAST_RESUBMIT_SUBTYPE = 1; + public static final byte NXAST_RESUBMIT_TABLE_SUBTYPE = 14; + public static final NiciraActionSerializerKey SERIALIZER_KEY = + new NiciraActionSerializerKey(EncodeConstants.OF13_VERSION_ID, NxmNxResubmit.class); + public static final NiciraActionDeserializerKey RESUBMIT_DESERIALIZER_KEY = + new NiciraActionDeserializerKey(EncodeConstants.OF13_VERSION_ID, NXAST_RESUBMIT_SUBTYPE); + public static final NiciraActionDeserializerKey RESUBMIT_TABLE_DESERIALIZER_KEY = + new NiciraActionDeserializerKey(EncodeConstants.OF13_VERSION_ID, NXAST_RESUBMIT_TABLE_SUBTYPE); + + private static final byte OFP_TABLE_ALL = (byte)255; + private static final short OFP_IN_PORT = (short)0xfff8; + private static final int padding = 3; // nx_action_resubmit : uint8_t pad[3]; + + public byte getSubType(ActionResubmit action) { + if ((action.getTable() == null) || (action.getTable().byteValue() == OFP_TABLE_ALL)) return NXAST_RESUBMIT_SUBTYPE; + return NXAST_RESUBMIT_TABLE_SUBTYPE; + } + + @Override + public void serialize(Action input, ByteBuf outBuffer) { + byte table = OFP_TABLE_ALL; + short inPort = OFP_IN_PORT; + + ActionResubmit action = input.getAugmentation(OfjAugNxAction.class).getActionResubmit(); + serializeHeader(LENGTH, getSubType(action), outBuffer); + + if (action.getInPort() != null) inPort = action.getInPort().shortValue(); + if (action.getTable() != null) table = action.getTable().byteValue(); + outBuffer.writeShort(inPort); + outBuffer.writeByte(table); + outBuffer.writeZero(padding); + } + + @Override + public Action deserialize(ByteBuf message) { + ActionBuilder actionBuilder = deserializeHeader(message); + ActionResubmitBuilder builder = new ActionResubmitBuilder(); + builder.setInPort(message.readUnsignedShort()); + builder.setTable(message.readUnsignedByte()); + message.skipBytes(padding); + OfjAugNxActionBuilder augNxActionBuilder = new OfjAugNxActionBuilder(); + augNxActionBuilder.setActionResubmit(builder.build()); + actionBuilder.addAugmentation(ExperimenterIdAction.class, + createExperimenterIdAction(NxmNxResubmit.class)); + actionBuilder.addAugmentation(OfjAugNxAction.class, augNxActionBuilder.build()); + return actionBuilder.build(); + } + +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModule.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModule.java new file mode 100644 index 000000000..493236473 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModule.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.api.config.rev140711; + +import org.opendaylight.openflowjava.nx.api.impl.NiciraExtensionCodecRegistratorImpl; + +public class NiciraExtensionApiProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.api.config.rev140711.AbstractNiciraExtensionApiProviderModule { + public NiciraExtensionApiProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public NiciraExtensionApiProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.api.config.rev140711.NiciraExtensionApiProviderModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public java.lang.AutoCloseable createInstance() { + return new NiciraExtensionCodecRegistratorImpl(getOpenflowSwitchConnectionProviderDependency()); + + } + +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModuleFactory.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModuleFactory.java new file mode 100644 index 000000000..5a6995338 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/api/config/rev140711/NiciraExtensionApiProviderModuleFactory.java @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +/* +* Generated file +* +* Generated from: yang module name: ovs-nx-api-config yang module local name: ovs-nx-api +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Sat Aug 09 23:38:15 PDT 2014 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.api.config.rev140711; +public class NiciraExtensionApiProviderModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.api.config.rev140711.AbstractNiciraExtensionApiProviderModuleFactory { + +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModule.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModule.java new file mode 100644 index 000000000..0bf0799cc --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModule.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.config.rev140711; + +import org.opendaylight.ovs.nx.ofjava.NiciraExtensionsRegistrator; + +public class NiciraExtensionProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.config.rev140711.AbstractNiciraExtensionProviderModule { + public NiciraExtensionProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public NiciraExtensionProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.config.rev140711.NiciraExtensionProviderModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public java.lang.AutoCloseable createInstance() { + NiciraExtensionsRegistrator registrator = new NiciraExtensionsRegistrator(getNxCodecRegistratorDependency()); + registrator.registerNiciraExtensions(); + return registrator; + } + +} diff --git a/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModuleFactory.java b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModuleFactory.java new file mode 100644 index 000000000..05dadfdb2 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/config/rev140711/NiciraExtensionProviderModuleFactory.java @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +/* +* Generated file +* +* Generated from: yang module name: ovs-nx-config yang module local name: ovs-nx +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Sat Aug 09 23:54:31 PDT 2014 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.config.rev140711; +public class NiciraExtensionProviderModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.config.rev140711.AbstractNiciraExtensionProviderModuleFactory { + +} diff --git a/of-extension/nx-ofjava/src/main/resources/initial/50-ovs-nx-api-config.xml b/of-extension/nx-ofjava/src/main/resources/initial/50-ovs-nx-api-config.xml new file mode 100644 index 000000000..76177df2a --- /dev/null +++ b/of-extension/nx-ofjava/src/main/resources/initial/50-ovs-nx-api-config.xml @@ -0,0 +1,38 @@ + + + + + urn:opendaylight:params:xml:ns:yang:ovs:nx:api:config?module=ovs-nx-api-config&revision=2014-07-11 + + + + + + + + prefix:ovs-nx-api + ovs-nx-api-bundle + + ofSwitch:openflow-switch-connection-provider + openflow-switch-connection-provider-legacy + + + ofSwitch:openflow-switch-connection-provider + openflow-switch-connection-provider-default + + + + + + + prefix:nx-codec-registrator + + ovs-nx-registrator + /modules/module[type='ovs-nx-api'][name='ovs-nx-api-bundle'] + + + + + + + diff --git a/of-extension/nx-ofjava/src/main/resources/initial/51-ovs-nx-config.xml b/of-extension/nx-ofjava/src/main/resources/initial/51-ovs-nx-config.xml new file mode 100644 index 000000000..008b3f482 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/resources/initial/51-ovs-nx-config.xml @@ -0,0 +1,24 @@ + + + + + urn:opendaylight:params:xml:ns:yang:ovs:nx:config?module=ovs-nx-config&revision=2014-07-11 + + + + + + + + prefix:ovs-nx + ovs-nx-bundle + + prefix:nx-codec-registrator + ovs-nx-registrator + + + + + + + diff --git a/of-extension/nx-ofjava/src/main/yang/ovs-nx-action.yang b/of-extension/nx-ofjava/src/main/yang/ovs-nx-action.yang new file mode 100644 index 000000000..bb1561f2a --- /dev/null +++ b/of-extension/nx-ofjava/src/main/yang/ovs-nx-action.yang @@ -0,0 +1,42 @@ +module ovs-nx-action { + yang-version 1; + + namespace "urn:opendaylight:ovs:nx:action"; + prefix "nx-action"; + + import openflow-action {prefix ofaction;} + import openflow-types {prefix oft;} + import yang-ext {prefix ext; revision-date "2013-07-09";} + + description + "Nicira openflow action extensions"; + + revision "2014-04-21" { + description "Initial revision"; + } + + identity nxm-nx-resubmit { + base ofaction:experimenter-action-sub-type; + } + + grouping ofj-nx-action-resubmit-grouping { + container action-resubmit { + leaf in-port { + type uint16; + default 0xfff8; // OFPP_INPORT + } + leaf table { + type uint8 { + range "0 .. 255"; + } + default 255; // Current Table + } + } + } + + augment "/ofaction:actions-container/ofaction:action" { + ext:augment-identifier "ofj-aug-nx-action"; + uses ofj-nx-action-resubmit-grouping; + } + +} diff --git a/of-extension/nx-ofjava/src/main/yang/ovs-nx-api-config.yang b/of-extension/nx-ofjava/src/main/yang/ovs-nx-api-config.yang new file mode 100644 index 000000000..668a887d0 --- /dev/null +++ b/of-extension/nx-ofjava/src/main/yang/ovs-nx-api-config.yang @@ -0,0 +1,42 @@ +module ovs-nx-api-config { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:ovs:nx:api:config"; + prefix "ovs-nx-api"; + + import config {prefix config; revision-date 2013-04-05;} + import openflow-switch-connection-provider {prefix openflow-switch-connection-provider;revision-date 2014-03-28;} + + description + "Nicira extensions API in openflow library."; + + revision "2014-07-11" { + description + "Initial revision"; + } + + identity ovs-nx-api { + base config:module-type; + config:provided-service nx-codec-registrator; + config:java-name-prefix NiciraExtensionApiProvider; + } + + identity nx-codec-registrator { + base config:service-type; + config:java-class "org.opendaylight.openflowjava.nx.api.NiciraExtensionCodecRegistrator"; + } + + augment "/config:modules/config:module/config:configuration" { + case ovs-nx-api { + when "/config:modules/config:module/config:type = 'ovs-nx-api'"; + + list openflow-switch-connection-provider { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity openflow-switch-connection-provider:openflow-switch-connection-provider; + } + } + } + } + } +} \ No newline at end of file diff --git a/of-extension/nx-ofjava/src/main/yang/ovs-nx-config.yang b/of-extension/nx-ofjava/src/main/yang/ovs-nx-config.yang new file mode 100644 index 000000000..3deb7cc9f --- /dev/null +++ b/of-extension/nx-ofjava/src/main/yang/ovs-nx-config.yang @@ -0,0 +1,36 @@ +module ovs-nx-config { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:ovs:nx:config"; + prefix "ovs-nx"; + + import config {prefix config; revision-date 2013-04-05;} + import ovs-nx-api-config {prefix ovs-nx-api-config;revision-date 2014-07-11;} + + description + "Nicira extensions in openflow library."; + + revision "2014-07-11" { + description + "Initial revision"; + } + + identity ovs-nx { + base config:module-type; + config:java-name-prefix NiciraExtensionProvider; + } + + augment "/config:modules/config:module/config:configuration" { + case ovs-nx { + when "/config:modules/config:module/config:type = 'ovs-nx'"; + + container nx-codec-registrator { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity ovs-nx-api-config:nx-codec-registrator; + } + } + } + } + } +} \ No newline at end of file diff --git a/of-extension/nx-ofjava/src/main/yang/ovs-nx-match.yang b/of-extension/nx-ofjava/src/main/yang/ovs-nx-match.yang new file mode 100644 index 000000000..3b75e9f9a --- /dev/null +++ b/of-extension/nx-ofjava/src/main/yang/ovs-nx-match.yang @@ -0,0 +1,18 @@ +module ovs-nx-match { + yang-version 1; + + namespace "urn:opendaylight:ovs:nx:match"; + prefix "nx-match"; + + import openflow-extensible-match {prefix ofoxm;} + import openflow-types {prefix oft;} + import ietf-yang-types {prefix yang; revision-date "2010-09-24";} + import yang-ext {prefix ext; revision-date "2013-07-09";} + + description + "Nicira openflow match extensions"; + + revision "2014-04-21" { + description "Initial revision"; + } +} diff --git a/of-extension/nx-sal/pom.xml b/of-extension/nx-sal/pom.xml new file mode 100644 index 000000000..0586a42fd --- /dev/null +++ b/of-extension/nx-sal/pom.xml @@ -0,0 +1,141 @@ + + + + commons + org.opendaylight.ovsdb + 1.2.0-SNAPSHOT + ../../commons/parent + + 4.0.0 + + of-extension.nx-sal + ${ovsdb.ofextension.version} + bundle + Opendaylight OVS NX Extensions for SAL Flow Models + + + + org.opendaylight.openflowplugin + openflowjava-extension-nicira + + + org.opendaylight.openflowplugin + openflowjava-extension-nicira-api + + + org.opendaylight.openflowplugin + openflowplugin-extension-api + + + org.opendaylight.openflowplugin + openflowplugin-extension-nicira + + + + org.opendaylight.openflowplugin + openflowplugin + + + + + org.opendaylight.controller.model + model-flow-base + + + org.opendaylight.controller.model + model-flow-service + + + org.opendaylight.controller.model + model-flow-statistics + + + org.opendaylight.controller.model + model-inventory + + + + + org.opendaylight.openflowjava + openflow-protocol-api + + + org.opendaylight.openflowjava + openflow-protocol-impl + + + org.opendaylight.ovsdb + of-extension.nx-ofjava + + + + + + org.apache.felix + maven-bundle-plugin + 2.3.6 + true + + + org.opendaylight.yangtools + yang-maven-plugin + + + + generate-sources + + + + + + org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator + + ${project.build.directory}/generated-sources/config + + + urn:opendaylight:params:xml:ns:yang:controller:config==org.opendaylight.controller.config.yang + + + + + + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl + + ${project.build.directory}/generated-sources/sal + + + org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl + ${project.build.directory}/site/models + + + true + + + + + + org.opendaylight.controller + yang-jmx-generator-plugin + ${controller.config.version} + + + org.opendaylight.yangtools + maven-sal-api-gen-plugin + ${yangtools.version} + jar + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + + diff --git a/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/NiciraExtensionProvider.java b/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/NiciraExtensionProvider.java new file mode 100644 index 000000000..bf8385819 --- /dev/null +++ b/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/NiciraExtensionProvider.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.ovs.nx.sal; + +import java.util.HashSet; +import java.util.Set; + +import org.opendaylight.openflowjava.nx.api.NiciraUtil; +import org.opendaylight.ovs.nx.sal.convertor.action.ResubmitConvertor; +import org.opendaylight.ovs.nx.ofjava.codec.action.ResubmitCodec; +import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; +import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava; +import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator; +import org.opendaylight.openflowplugin.extension.api.TypeVersionKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.add.flow.input.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitRpcAddFlowApplyActionsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.add.flow.input.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionResubmitRpcAddFlowWriteActionsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionResubmitRpcAddGroupCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionResubmitNodesNodeGroupBucketsBucketActionsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitNodesNodeTableFlowApplyActionsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionResubmitNodesNodeTableFlowWriteActionsCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.remove.group.input.buckets.bucket.action.action.NxActionResubmitRpcRemoveGroupCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.update.group.input.original.group.buckets.bucket.action.action.NxActionResubmitRpcUpdateGroupOriginalCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.update.group.input.updated.group.buckets.bucket.action.action.NxActionResubmitRpcUpdateGroupUpdatedCase; +import org.opendaylight.yangtools.concepts.ObjectRegistration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.base.Preconditions; + +public class NiciraExtensionProvider implements AutoCloseable { + + private static final Logger LOG = LoggerFactory + .getLogger(NiciraExtensionProvider.class); + + private ExtensionConverterRegistrator extensionConverterRegistrator; + private Set> registrations; + + private final static ResubmitConvertor RESUBMIT_CONVERTOR = new ResubmitConvertor(); + + @Override + public void close() { + for (AutoCloseable janitor : registrations) { + try { + janitor.close(); + } catch (Exception e) { + LOG.warn("closing of extension converter failed", e); + } + } + extensionConverterRegistrator = null; + } + + public void setExtensionConverterRegistrator( + ExtensionConverterRegistrator extensionConverterRegistrator) { + this.extensionConverterRegistrator = extensionConverterRegistrator; + } + + public void registerConverters() { + Preconditions.checkNotNull(extensionConverterRegistrator); + registrations = new HashSet<>(); + + registerAction13(NxActionResubmitNodesNodeTableFlowApplyActionsCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitNodesNodeTableFlowWriteActionsCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitNodesNodeGroupBucketsBucketActionsCase.class, RESUBMIT_CONVERTOR); + + + registerAction13(NxActionResubmitRpcAddFlowApplyActionsCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitRpcAddFlowWriteActionsCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitRpcAddGroupCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitRpcRemoveGroupCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitRpcUpdateGroupOriginalCase.class, RESUBMIT_CONVERTOR); + registerAction13(NxActionResubmitRpcUpdateGroupUpdatedCase.class, RESUBMIT_CONVERTOR); + + registrations.add(extensionConverterRegistrator.registerActionConvertor(NiciraUtil.createOfJavaKeyFrom(ResubmitCodec.SERIALIZER_KEY), RESUBMIT_CONVERTOR)); + } + + private void registerAction13( + Class actionCaseType, + ConvertorActionToOFJava actionConvertor) { + TypeVersionKey key = new TypeVersionKey<>(actionCaseType, EncodeConstants.OF13_VERSION_ID); + registrations.add(extensionConverterRegistrator.registerActionConvertor(key, actionConvertor)); + } +} diff --git a/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ActionUtil.java b/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ActionUtil.java new file mode 100644 index 000000000..556e4d036 --- /dev/null +++ b/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ActionUtil.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.ovs.nx.sal.convertor.action; + +import org.opendaylight.openflowjava.nx.api.NiciraConstants; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdAction; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Experimenter; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.ExperimenterActionSubType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.OfjAugNxAction; + +public class ActionUtil { + + private final static ExperimenterIdActionBuilder EXPERIMENTER_ID_ACTION_BUILDER; + + static { + EXPERIMENTER_ID_ACTION_BUILDER = new ExperimenterIdActionBuilder(); + EXPERIMENTER_ID_ACTION_BUILDER.setExperimenter(new ExperimenterId(NiciraConstants.NX_VENDOR_ID)); + } + + /** + * @param augNxAction + * @param subType + * @return OFJava action with augmentation containing action subtype and experimenter type + */ + public static Action createNiciraAction(OfjAugNxAction augNxAction, + Class subType) { + ActionBuilder actionBuilder = new ActionBuilder(); + actionBuilder.setType(Experimenter.class); + actionBuilder.addAugmentation(ExperimenterIdAction.class, EXPERIMENTER_ID_ACTION_BUILDER.setSubType(subType) + .build()); + actionBuilder.addAugmentation(OfjAugNxAction.class, augNxAction); + return actionBuilder.build(); + } +} diff --git a/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ResubmitConvertor.java b/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ResubmitConvertor.java new file mode 100644 index 000000000..402226b40 --- /dev/null +++ b/of-extension/nx-sal/src/main/java/org/opendaylight/ovs/nx/sal/convertor/action/ResubmitConvertor.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ + +package org.opendaylight.ovs.nx.sal.convertor.action; + +import org.opendaylight.openflowplugin.extension.api.ConvertorActionFromOFJava; +import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava; +import org.opendaylight.openflowplugin.extension.api.path.ActionPath; +import org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.CodecPreconditionException; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.NxmNxResubmit; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.OfjAugNxAction; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.OfjAugNxActionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.ofj.nx.action.resubmit.grouping.ActionResubmit; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.action.rev140421.ofj.nx.action.resubmit.grouping.ActionResubmitBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.NxActionResubmitGrouping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionResubmitNotifFlowsStatisticsUpdateApplyActionsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionResubmitNotifFlowsStatisticsUpdateWriteActionsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.group.desc.stats.updated.group.desc.stats.buckets.bucket.action.action.NxActionResubmitNotifGroupDescStatsUpdatedCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionResubmitNodesNodeTableFlowWriteActionsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.resubmit.grouping.NxResubmit; +import org.opendaylight.yang.gen.v1.urn.opendaylight.ovs.nx.sal.action.rev140714.nx.action.resubmit.grouping.NxResubmitBuilder; + +import com.google.common.base.Preconditions; + +/** + * Convert to/from SAL flow model to openflowjava model for Resubmit action + */ +public class ResubmitConvertor implements +ConvertorActionToOFJava, +ConvertorActionFromOFJava { + + @Override + public org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action convert(Action input, ActionPath path) { + ActionResubmit action = input.getAugmentation(OfjAugNxAction.class).getActionResubmit(); + NxResubmitBuilder builder = new NxResubmitBuilder(); + builder.setInPort(action.getInPort()); + builder.setTable(action.getTable()); + return resolveAction(builder.build(), path); + } + + private static org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action resolveAction(NxResubmit value, ActionPath path) { + switch (path) { + case NODES_NODE_TABLE_FLOW_INSTRUCTIONS_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION_EXTENSIONLIST_EXTENSION: + return new NxActionResubmitNodesNodeTableFlowWriteActionsCaseBuilder().setNxResubmit(value).build(); + case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_WRITEACTIONSCASE_WRITEACTIONS_ACTION_ACTION: + return new NxActionResubmitNotifFlowsStatisticsUpdateWriteActionsCaseBuilder().setNxResubmit(value).build(); + case FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION: + return new NxActionResubmitNotifFlowsStatisticsUpdateApplyActionsCaseBuilder().setNxResubmit(value).build(); + case GROUPDESCSTATSUPDATED_GROUPDESCSTATS_BUCKETS_BUCKET_ACTION: + return new NxActionResubmitNotifGroupDescStatsUpdatedCaseBuilder().setNxResubmit(value).build(); + default: + throw new CodecPreconditionException(path); + } + } + + @Override + public Action convert(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action nxActionArg) { + Preconditions.checkArgument(nxActionArg instanceof NxActionResubmitGrouping); + NxActionResubmitGrouping nxAction = (NxActionResubmitGrouping) nxActionArg; + ActionResubmitBuilder builder = new ActionResubmitBuilder(); + builder.setInPort(nxAction.getNxResubmit().getInPort()); + builder.setTable(nxAction.getNxResubmit().getTable()); + OfjAugNxActionBuilder augNxActionBuilder = new OfjAugNxActionBuilder(); + augNxActionBuilder.setActionResubmit(builder.build()); + return ActionUtil.createNiciraAction(augNxActionBuilder.build(), NxmNxResubmit.class); + } + +} \ No newline at end of file diff --git a/of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModule.java b/of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModule.java new file mode 100644 index 000000000..bb5dd8228 --- /dev/null +++ b/of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModule.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 Red Hat, Inc. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Madhu Venugopal + */ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.sal.config.impl.rev140711; + +import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator; +import org.opendaylight.ovs.nx.sal.NiciraExtensionProvider; + +public class ConfigurableNiciraExtensionProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.sal.config.impl.rev140711.AbstractConfigurableNiciraExtensionProviderModule { + public ConfigurableNiciraExtensionProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public ConfigurableNiciraExtensionProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.sal.config.impl.rev140711.ConfigurableNiciraExtensionProviderModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public java.lang.AutoCloseable createInstance() { + NiciraExtensionProvider provider = new NiciraExtensionProvider(); + ExtensionConverterRegistrator registrator = getOpenflowPluginProviderDependency().getExtensionConverterRegistrator(); + provider.setExtensionConverterRegistrator(registrator); + provider.registerConverters(); + return provider; + } + +} diff --git a/of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModuleFactory.java b/of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModuleFactory.java new file mode 100644 index 000000000..9eb5da223 --- /dev/null +++ b/of-extension/nx-sal/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/ovs/nx/sal/config/impl/rev140711/ConfigurableNiciraExtensionProviderModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: ovs-nx-sal-impl yang module local name: ovs-nx-sal-provider-impl +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Sun Aug 10 00:20:39 PDT 2014 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.sal.config.impl.rev140711; +public class ConfigurableNiciraExtensionProviderModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovs.nx.sal.config.impl.rev140711.AbstractConfigurableNiciraExtensionProviderModuleFactory { + +} diff --git a/of-extension/nx-sal/src/main/resources/initial/52-ovs-nx-sal-config.xml b/of-extension/nx-sal/src/main/resources/initial/52-ovs-nx-sal-config.xml new file mode 100644 index 000000000..a24c83b50 --- /dev/null +++ b/of-extension/nx-sal/src/main/resources/initial/52-ovs-nx-sal-config.xml @@ -0,0 +1,27 @@ + + + + + urn:opendaylight:params:xml:ns:yang:ovs:nx:sal:config:impl?module=ovs-nx-sal-cfg-impl&revision=2014-07-11 + + urn:opendaylight:params:xml:ns:yang:openflow:common:config?module=openflow-provider&revision=2014-03-26 + + + + + + + + prefix:ovs-nx-sal-provider-impl + ovs-nx-sal-provider-default-impl + + + opfprov:openflow-provider + openflow-provider + + + + + + + diff --git a/of-extension/nx-sal/src/main/yang/ovs-nx-sal-action.yang b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-action.yang new file mode 100644 index 000000000..6c9998d11 --- /dev/null +++ b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-action.yang @@ -0,0 +1,142 @@ +module ovs-nx-sal-action { + yang-version 1; + + namespace "urn:opendaylight:ovs:nx:sal:action"; + prefix "ovs-nx-sal-action"; + + import yang-ext {prefix ext; revision-date "2013-07-09";} + import flow-node-inventory {prefix fni; revision-date 2013-08-19; } + import opendaylight-inventory {prefix inv;revision-date "2013-08-19";} + import sal-flow {prefix sal-flow;revision-date "2013-08-19";} + import sal-group {prefix sal-group;revision-date "2013-09-18";} + import packet-processing {prefix sal-packet;revision-date "2013-07-09";} + import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";} + import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";} + import nicira-match {prefix nicira-match;revision-date "2014-04-21";} + import openflowplugin-extension-general {prefix ext-gen;revision-date "2014-07-14";} + import openflow-action {prefix ofaction;revision-date "2013-07-31";} + + description + "Nicira openflow action extensions."; + + revision "2014-07-14" { + description "Initial revision"; + } + grouping nx-action-resubmit-grouping { + container nx-resubmit { + description "Re-searches OpenFlow flow table (or the table whose number is specified by table) + with the in-port field replaced by port (if port is specified) and executes the actions found"; + leaf in-port { + type uint16; + default 0xfff8; // OFPP_INPORT + } + leaf table { + type uint8 { + range "0 .. 255"; + } + default 255; // Current Table + } + } + } + + // ACTION augmentations + + augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" { + case nx-action-resubmit-rpc-add-flow-write-actions-case { + uses nx-action-resubmit-grouping; + } + } + + augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" { + case nx-action-resubmit-rpc-add-flow-apply-actions-case { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" { + case "nx-action-resubmit-rpc-remove-flow-write-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" { + case "nx-action-resubmit-rpc-remove-flow-apply-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" { + case "nx-action-resubmit-rpc-update-flow-original-write-actions-case" { + uses nx-action-resubmit-grouping; + } + } + + augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" { + case "nx-action-resubmit-rpc-update-flow-original-apply-actions-case" { + uses nx-action-resubmit-grouping; + } + } + + augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" { + case "nx-action-resubmit-rpc-update-flow-updated-write-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" { + case "nx-action-resubmit-rpc-update-flow-updated-apply-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" { + case "nx-action-resubmit-rpc-add-group-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" { + case "nx-action-resubmit-rpc-remove-group-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" { + case "nx-action-resubmit-rpc-update-group-original-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" { + case "nx-action-resubmit-rpc-update-group-updated-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" { + case "nx-action-resubmit-rpc-transmit-packet-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" { + case "nx-action-resubmit-nodes-node-table-flow-write-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" { + case "nx-action-resubmit-nodes-node-table-flow-apply-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" { + case "nx-action-resubmit-nodes-node-group-buckets-bucket-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" { + case "nx-action-resubmit-notif-flows-statistics-update-write-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" { + case "nx-action-resubmit-notif-flows-statistics-update-apply-actions-case" { + uses nx-action-resubmit-grouping; + } + } + augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" { + case "nx-action-resubmit-notif-group-desc-stats-updated-case" { + uses nx-action-resubmit-grouping; + } + } +} diff --git a/of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg-impl.yang b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg-impl.yang new file mode 100644 index 000000000..c053da69b --- /dev/null +++ b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg-impl.yang @@ -0,0 +1,38 @@ +module ovs-nx-sal-cfg-impl { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:ovs:nx:sal:config:impl"; + prefix "ovs-nx-sal-cfg-impl"; + + import config {prefix config; revision-date 2013-04-05;} + import openflow-provider {prefix openflow-provider; revision-date 2014-03-26;} + import ovs-nx-sal-cfg {prefix ovs-nx-sal-cfg;} + + description + "openflow extension for nicira - config-impl"; + + revision "2014-07-11" { + description + "Initial revision"; + } + + identity ovs-nx-sal-provider-impl { + base config:module-type; + config:provided-service ovs-nx-sal-cfg:ovs-nx-sal-provider; + config:java-name-prefix ConfigurableNiciraExtensionProvider; + } + + augment "/config:modules/config:module/config:configuration" { + case ovs-nx-sal-provider-impl { + when "/config:modules/config:module/config:type = 'ovs-nx-sal-provider-impl'"; + + container openflow-plugin-provider { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity openflow-provider:openflow-provider; + } + } + } + } + } +} diff --git a/of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg.yang b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg.yang new file mode 100644 index 000000000..c9960fca6 --- /dev/null +++ b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-cfg.yang @@ -0,0 +1,20 @@ +module ovs-nx-sal-cfg { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:controller:config:ovs:nx:sal:config"; + prefix "ovs-nx-sal-cfg"; + + import config {prefix config; revision-date 2013-04-05; } + + description + "openflow extension for nicira - config"; + + revision "2014-07-11" { + description + "Initial revision"; + } + + identity ovs-nx-sal-provider { + base config:service-type; + config:java-class "org.opendaylight.ovs.nx.sal.NiciraExtensionProvider"; + } +} \ No newline at end of file diff --git a/of-extension/nx-sal/src/main/yang/ovs-nx-sal-match.yang b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-match.yang new file mode 100644 index 000000000..3267cf5af --- /dev/null +++ b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-match.yang @@ -0,0 +1,13 @@ +module ovs-nx-sal-match { + yang-version 1; + + namespace "urn:opendaylight:ovs:nx:sal:match"; + prefix "ovs-nx-sal-match"; + + description + "Nicira openflow match extensions."; + + revision "2014-07-14" { + description "Initial revision"; + } +} diff --git a/pom.xml b/pom.xml index 25ac506fb..41112c399 100755 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,8 @@ northbound openstack/net-virt openstack/net-virt-providers + of-extension/nx-ofjava + of-extension/nx-sal ovs-sfc integrationtest -- 2.36.6