From 4d138bb75ed5143fe2d101115d231e96c69ad4c6 Mon Sep 17 00:00:00 2001 From: HemaTG Date: Mon, 27 Apr 2015 13:59:12 +0530 Subject: [PATCH] MD SAL Util API exposed as a Service Change-Id: I2664d3f9677e7da17fd965c21981c9a3ea23741d Signed-off-by: HemaTG --- features/pom.xml | 17 +++++ features/src/main/features/features.xml | 5 +- mdsalutil/mdsalutil-api/pom.xml | 69 +++++++++++++++++-- .../vpnservice/mdsalutil/MDSALUtil.java | 11 +-- .../interfaces/IMdsalApiManager.java | 2 + .../src/main/yang/odl-mdsalutil.yang | 20 ++++++ mdsalutil/mdsalutil-impl/pom.xml | 12 ++-- .../src/main/config/default-config.xml | 10 +++ .../mdsalutil/internal/MDSALManager.java | 27 +++----- .../impl/rev150403/MdsaluttilimplModule.java | 15 +++- .../src/main/yang/mdsalutil-impl.yang | 6 +- pom.xml | 2 +- 12 files changed, 159 insertions(+), 37 deletions(-) create mode 100644 mdsalutil/mdsalutil-api/src/main/yang/odl-mdsalutil.yang diff --git a/features/pom.xml b/features/pom.xml index 995a768e..e4405cb3 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -24,6 +24,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL 1.2.0-SNAPSHOT 0.1.0-SNAPSHOT 0.7.0-SNAPSHOT + 0.0.1-SNAPSHOT 0.0.1-SNAPSHOT 0.0.1-SNAPSHOT 0.0.1-SNAPSHOT @@ -86,6 +87,22 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL ${vpnmanager.version} config xml + + ${project.groupId} + mdsalutil-impl + ${mdsalutil.version} + + + ${project.groupId} + mdsalutil-impl + ${mdsalutil.version} + config + xml + + + ${project.groupId} + mdsalutil-api + ${mdsalutil.version} ${project.groupId} diff --git a/features/src/main/features/features.xml b/features/src/main/features/features.xml index 5045cbea..d87ef722 100644 --- a/features/src/main/features/features.xml +++ b/features/src/main/features/features.xml @@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html odl-yangtools-models odl-openflowplugin-nsf-model mvn:org.opendaylight.vpnservice/model-bgp/{{VERSION}} - mvn:org.opendaylight.vpnservice/vpnmanager-api/${vpnmanager.version} + mvn:org.opendaylight.vpnservice/vpnmanager-api/${vpnmanager.version} mvn:org.opendaylight.vpnservice/nexthopmgr-api/${nexthopmgr.version} mvn:org.opendaylight.vpnservice/idmanager-api/${idmanager.version} mvn:org.opendaylight.vpnservice/fibmanager-api/${fibmanager.version} @@ -29,6 +29,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html odl-vpnservice-api mvn:org.opendaylight.vpnservice/bgpmanager-api/${project.version} mvn:org.opendaylight.vpnservice/bgpmanager-impl/${project.version} + mvn:org.opendaylight.vpnservice/mdsalutil-api/${interfacemgr.version} + mvn:org.opendaylight.vpnservice/mdsalutil-impl/${interfacemgr.version} mvn:org.opendaylight.vpnservice/vpnmanager-impl/${vpnmanager.version} mvn:org.opendaylight.vpnservice/interfacemgr-api/${interfacemgr.version} mvn:org.opendaylight.vpnservice/interfacemgr-impl/${interfacemgr.version} @@ -40,6 +42,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html wrap:mvn:org.apache.thrift/libthrift/0.9.1$overwrite=merge&Bundle-Version=0.9.1&Export-Package=*;-noimport:=true;version="0.9.1" mvn:org.opendaylight.vpnservice/bgpmanager-impl/${project.version}/xml/config + mvn:org.opendaylight.vpnservice/mdsalutil-impl/${interfacemgr.version}/xml/config mvn:org.opendaylight.vpnservice/vpnmanager-impl/${vpnmanager.version}/xml/config mvn:org.opendaylight.vpnservice/interfacemgr-impl/${interfacemgr.version}/xml/config mvn:org.opendaylight.vpnservice/nexthopmgr-impl/${nexthopmgr.version}/xml/config diff --git a/mdsalutil/mdsalutil-api/pom.xml b/mdsalutil/mdsalutil-api/pom.xml index 6e68dd5c..c8d18d40 100644 --- a/mdsalutil/mdsalutil-api/pom.xml +++ b/mdsalutil/mdsalutil-api/pom.xml @@ -15,8 +15,14 @@ 0.0.1-SNAPSHOT bundle + + + 0.1.0-SNAPSHOT + + + + ${project.basedir}/META-INF + --> + + org.opendaylight.yangtools + yang-maven-plugin + + + + generate-sources + + + + + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl + ${salGeneratorPath} + + + org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator + ${jmxGeneratorPath} + + urn:opendaylight:params:xml:ns:yang==org.opendaylight.controller.config.yang + + + + org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl + target/site/models + + + true + + + + + + org.opendaylight.openflowplugin.model + model-flow-base + ${openflowplugin.version} + + + org.opendaylight.openflowplugin.model + model-flow-service + ${openflowplugin.version} + + + + org.opendaylight.controller.model model-inventory + --> + + + org.opendaylight.controller + config-api + org.opendaylight.controller sal-common @@ -81,11 +139,12 @@ com.google.guava guava + diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MDSALUtil.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MDSALUtil.java index bcaf558c..81cfd10d 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MDSALUtil.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MDSALUtil.java @@ -24,16 +24,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Fl import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInputBuilder; +//import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInput; +//import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; -import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInputBuilder; +//import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInput; +//import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes; @@ -184,6 +184,8 @@ public class MDSALUtil { .setGroupName(groupName).setResyncFlag(isResync).build(); } */ + // Removing --Missing Constraint + /* public static GetFlowStatisticsFromFlowTableInput buildGetFlowStatisticsFromFlowTableInput(short tableId, List listMatchInfo, long dpnId) { return new GetFlowStatisticsFromFlowTableInputBuilder() @@ -202,6 +204,7 @@ public class MDSALUtil { new NodeRef(InstanceIdentifier.builder(Nodes.class) .child(Node.class, new NodeKey(new NodeId("openflow:" + dpnId))).toInstance())).build(); } + */ public static TransmitPacketInput getPacketOutDefault(List actionInfos, byte[] payload, long dpnId) { return new TransmitPacketInputBuilder() diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java index f3de364e..1ab2c54a 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java @@ -31,5 +31,7 @@ public interface IMdsalApiManager { public void sendPacketOutWithActions(long lDpnId, long groupId, byte[] payload, List actionInfos); public void sendARPPacketOutWithActions(long dpid, byte[] payload, List action_info); + + public void printTest() ; } diff --git a/mdsalutil/mdsalutil-api/src/main/yang/odl-mdsalutil.yang b/mdsalutil/mdsalutil-api/src/main/yang/odl-mdsalutil.yang new file mode 100644 index 00000000..2fa19b11 --- /dev/null +++ b/mdsalutil/mdsalutil-api/src/main/yang/odl-mdsalutil.yang @@ -0,0 +1,20 @@ +module odl-mdsalutil { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:mdsalutil:api"; + prefix "odl-mdsal"; + + import config { prefix config; revision-date 2013-04-05; } + + description + "Service definition for MD-SAL Util."; + + revision "2015-04-10" { + description + "Initial revision"; + } + + identity odl-mdsalutil { + base "config:service-type"; + config:java-class "org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager"; + } +} \ No newline at end of file diff --git a/mdsalutil/mdsalutil-impl/pom.xml b/mdsalutil/mdsalutil-impl/pom.xml index 1fa0775d..049d293f 100644 --- a/mdsalutil/mdsalutil-impl/pom.xml +++ b/mdsalutil/mdsalutil-impl/pom.xml @@ -23,21 +23,25 @@ sal-binding-api - org.opendaylight.controller.model - model-flow-service + org.opendaylight.openflowplugin.model + model-flow-base + 0.1.0-SNAPSHOT - org.opendaylight.controller.model - model-flow-base + org.opendaylight.openflowplugin.model + model-flow-service + 0.1.0-SNAPSHOT + + urn:opendaylight:params:xml:ns:yang:mdsalutil:api?module=odl-mdsalutil&revision=2015-04-10 urn:opendaylight:params:xml:ns:yang:mdsalutil:impl?module=mdsalutil-impl&revision=2015-04-03 urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 @@ -25,6 +26,15 @@ and is available at http://www.eclipse.org/legal/epl-v10.html + + + prefix:odl-mdsalutil + + mdsalutil-service + /modules/module[type='mdsalutil-impl'][name='mdsalutil-default'] + + + diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/vpnservice/mdsalutil/internal/MDSALManager.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/vpnservice/mdsalutil/internal/MDSALManager.java index 4c4cf053..00119d41 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/vpnservice/mdsalutil/internal/MDSALManager.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/vpnservice/mdsalutil/internal/MDSALManager.java @@ -40,7 +40,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.ta import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowTableRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId; +// Missing constraint +//import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; @@ -79,37 +80,25 @@ public class MDSALManager implements IMdsalApiManager,BindingAwareConsumer, Auto private DataBroker m_dataBroker; - // TODO: CHECK IF RQD - private ConsumerContext m_consumerContext = null; - - // TODO Remove this later - private DataBrokerService m_dataBrokerService; - + private PacketProcessingService m_packetProcessingService; - private final AtomicInteger m_atomicInteger = new AtomicInteger(); //TODO : IF ID MANAGER IS RQD - public void setDataProvider(final DataBroker salDataProvider) { - this.m_dataBroker = salDataProvider; - - } - - @Override public void onSessionInitialized(ConsumerContext session) { - s_logger.debug( " Session Initiated for MD SAL Manager") ; + s_logger.info( " Session Initiated for MD SAL Manager") ; m_consumerContext = session; m_dataBroker = session.getSALService(DataBroker.class); // TODO - Verify this. - // m_packetProcessingService = session.getRpcService(PacketProcessingService.class); + m_packetProcessingService = session.getRpcService(PacketProcessingService.class); } @@ -119,7 +108,11 @@ public class MDSALManager implements IMdsalApiManager,BindingAwareConsumer, Auto s_logger.info("MDSAL Manager Closed"); } - + @Override + public void printTest() { + + s_logger.info(" INTER MODULECOMMUNICATION IS WORKING!!!!"); + } @Override public void installFlow(FlowEntity flowEntity) { try { diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsalutil/impl/rev150403/MdsaluttilimplModule.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsalutil/impl/rev150403/MdsaluttilimplModule.java index 9bfb8d6e..ab2776d7 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsalutil/impl/rev150403/MdsaluttilimplModule.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsalutil/impl/rev150403/MdsaluttilimplModule.java @@ -1,4 +1,7 @@ package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsalutil.impl.rev150403; + +import org.opendaylight.vpnservice.mdsalutil.internal.MDSALManager; + public class MdsaluttilimplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsalutil.impl.rev150403.AbstractMdsaluttilimplModule { public MdsaluttilimplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); @@ -15,8 +18,14 @@ public class MdsaluttilimplModule extends org.opendaylight.yang.gen.v1.urn.opend @Override public java.lang.AutoCloseable createInstance() { - // TODO:implement - throw new java.lang.UnsupportedOperationException(); - } + // TODO:implement +// Can use the following to get a handle to data broker + + MDSALManager mdsalUtilMgr = new MDSALManager(); + getBrokerDependency().registerConsumer(mdsalUtilMgr); + //DataBroker dataBrokerService = getDataBrokerDependency(); + //mdsalUtilMgr.setDataProvider(dataBrokerService); + return mdsalUtilMgr ; + } } diff --git a/mdsalutil/mdsalutil-impl/src/main/yang/mdsalutil-impl.yang b/mdsalutil/mdsalutil-impl/src/main/yang/mdsalutil-impl.yang index d94f5a1f..7e2a66f4 100644 --- a/mdsalutil/mdsalutil-impl/src/main/yang/mdsalutil-impl.yang +++ b/mdsalutil/mdsalutil-impl/src/main/yang/mdsalutil-impl.yang @@ -5,6 +5,7 @@ module mdsalutil-impl { import config { prefix config; revision-date 2013-04-05; } import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;} + import odl-mdsalutil { prefix odl-mdsal; revision-date 2015-04-10;} description "Service definition for mdsal project"; @@ -15,8 +16,9 @@ module mdsalutil-impl { } identity mdsalutil-impl { - base config:module-type; - config:java-name-prefix mdsaluttilimpl; + base config:module-type; + config:provided-service odl-mdsal:odl-mdsalutil; + config:java-name-prefix Mdsaluttilimpl; } augment "/config:modules/config:module/config:configuration" { diff --git a/pom.xml b/pom.xml index dacac321..22e07fb4 100644 --- a/pom.xml +++ b/pom.xml @@ -17,12 +17,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL model-bgp + mdsalutil vpnmanager interfacemgr nexthopmgr idmanager fibmanager - mdsalutil bgpmanager distribution/karaf features -- 2.36.6