Merge "ITM: Fix for tunnel ports not getting deleted."
authorFaseela K <faseela.k@ericsson.com>
Thu, 14 Jul 2016 10:49:31 +0000 (10:49 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 14 Jul 2016 10:49:31 +0000 (10:49 +0000)
58 files changed:
alivenessmonitor/alivenessmonitor-api/pom.xml
alivenessmonitor/alivenessmonitor-api/src/main/yang/aliveness-monitor.yang
alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/AlivenessProtocolHandlerARP.java
alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/InventoryReader.java
alivenessmonitor/alivenessmonitor-impl/src/test/java/org/opendaylight/controller/alivenessmonitor/test/AlivenessMonitorTest.java
arputil/arputil-api/pom.xml
arputil/arputil-impl/pom.xml
arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java
commons/config-parent/pom.xml
commons/src/main/resources/genius_checkstyle.xml [deleted file]
interfacemanager/interfacemanager-api/pom.xml
interfacemanager/interfacemanager-api/src/main/yang/odl-interface.yang
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/AlivenessMonitorUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceManagerCommonUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceConfigListener.java [new file with mode: 0644]
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceStateListener.java [new file with mode: 0644]
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceInventoryStateListener.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigAddHelper.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/utilities/SouthboundUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateUpdateHelper.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/SouthboundUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/VlanTrunkSouthboundUtils.java
interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java
interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/StateInterfaceTest.java
interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/TopologyStateInterfaceTest.java
interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/TunnelInterfaceConfigurationTest.java
interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/VlanInterfaceConfigurationTest.java
itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java
itm/itm-api/src/main/yang/itm-config.yang
itm/itm-api/src/main/yang/itm-rpc.yang
itm/itm-api/src/main/yang/itm-state.yang
itm/itm-api/src/main/yang/itm.yang
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/SubnetObject.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/HwVtep.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelDeleteWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TransportZoneListener.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/VtepConfigSchemaListener.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/cli/TepCommandHelperTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelAddTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelAddTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelDeleteTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmManagerRpcServiceTest.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/ActionType.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowEntity.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MDSALUtil.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MatchFieldType.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NwConstants.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/hwvtep/HwvtepSouthboundUtils.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/hwvtep/HwvtepUtils.java
resourcemanager/resourcemanager-impl/src/main/java/org/opendaylight/genius/resourcemanager/ResourceManager.java
resourcemanager/resourcemanager-impl/src/main/java/org/opendaylight/genius/resourcemanager/ResourceManagerServiceProvider.java

index de533734f14c065dff3c6adecad374aa7e294baa..023ff42ff62b6b1ff7ffba3bc05b1e7ebe7f402a 100644 (file)
@@ -37,7 +37,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-inet-types</artifactId>
+      <artifactId>ietf-inet-types-2013-07-15</artifactId>
     </dependency>
   </dependencies>
 </project>
index 4f83df193770eb87158409d3e1f7f95c629113ac..cb76b2cb87ce917735b471bdf7db6728ea57a490 100644 (file)
@@ -4,7 +4,7 @@ module aliveness-monitor {
 
     import ietf-inet-types {
         prefix inet;
-        revision-date "2010-09-24";
+        revision-date "2013-07-15";
     }
 
     revision "2016-04-11" {
@@ -221,4 +221,4 @@ typedef ether-types {
             leaf-list monitor-ids { type uint32; }
         }
     }
-}
\ No newline at end of file
+}
index 31762790ce04a420dc70873c050114646077d267..3c13b3b3d59df847765da1da16c0c84df273efc9 100644 (file)
@@ -15,7 +15,7 @@ import com.google.common.util.concurrent.JdkFutureAdapters;
 import org.opendaylight.controller.liblldp.Packet;
 import org.opendaylight.genius.mdsalutil.MetaDataUtil;
 import org.opendaylight.genius.mdsalutil.packet.ARP;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.OdlArputilService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInput;
index 400aed8a0f78eb13a8238825d592540c248c3e9f..e2ea62cf98d74f41b209af3ea233726d84374dc9 100644 (file)
@@ -11,7 +11,7 @@ import com.google.common.base.Optional;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
 import org.opendaylight.yangtools.yang.binding.DataObject;
index 48d0ce9cd8bfde8b2fe79cbcba56d39860117796..240b3a5cca3c89a1190b9047dc7fbce4ea60e3c0 100644 (file)
@@ -46,7 +46,7 @@ import org.opendaylight.genius.alivenessmonitor.internal.AlivenessMonitor;
 import org.opendaylight.genius.alivenessmonitor.internal.AlivenessProtocolHandler;
 import org.opendaylight.genius.alivenessmonitor.internal.AlivenessProtocolHandlerARP;
 import org.opendaylight.genius.alivenessmonitor.internal.AlivenessProtocolHandlerLLDP;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.EtherTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorPauseInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorPauseInputBuilder;
index 985cbd75b29b7cbbb2b5a764c227ae408bb327d8..c79364d5577ed3caebdcabc8a17c9fddda64374e 100644 (file)
@@ -46,11 +46,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-inet-types</artifactId>
+      <artifactId>ietf-inet-types-2013-07-15</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-yang-types</artifactId>
+      <artifactId>ietf-yang-types-20130715</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
index 956e0c16f094bca78ef0c59382d72278596ed098..57e934743d6f2826cd484ea3f4b99711ccd3d484 100644 (file)
@@ -55,11 +55,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-inet-types</artifactId>
+      <artifactId>ietf-inet-types-2013-07-15</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-yang-types</artifactId>
+      <artifactId>ietf-yang-types-20130715</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
index f1c4a05d7c53f42cdaa7ceb13da7015f29608abb..a5c1b2c8668aa8e254853e35823258e3d2bfbe3b 100644 (file)
@@ -26,7 +26,7 @@ import org.opendaylight.genius.mdsalutil.NWUtil;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.genius.mdsalutil.packet.ARP;
 import org.opendaylight.genius.mdsalutil.packet.Ethernet;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
index 4a50e2c3c607383b8e5ecfe36fe07200ec9774e4..98e5ee95bcf09f1f64aa597f9d3b73666018a4a1 100644 (file)
@@ -69,30 +69,4 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-          <executions>
-            <execution>
-              <phase>process-sources</phase>
-              <goals>
-                <goal>check</goal>
-              </goals>
-            </execution>
-          </executions>
-        <configuration>
-          <configLocation>
-            ${project.basedir}/../../commons/src/main/resources/genius_checkstyle.xml
-          </configLocation>
-          <failsOnError>true</failsOnError>
-          <includes>**/*.java,**/*.xml,**/*.ini,**/*.sh,**/*.bat</includes>
-          <excludes>**\/target\/,**\/bin\/,**\/third-party,**\/yang-gen-sal</excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
 </project>
-
diff --git a/commons/src/main/resources/genius_checkstyle.xml b/commons/src/main/resources/genius_checkstyle.xml
deleted file mode 100644 (file)
index ea14c9e..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
-          "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
-
-<!--
-
-    Checkstyle configuration that checks the Google coding conventions from:
-
-    -  Google Java Style
-       https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html
-
-    Checkstyle is very configurable. Be sure to read the documentation at
-    http://checkstyle.sf.net (or in your downloaded distribution).
-
-    Most Checks are configurable, be sure to consult the documentation.
-
-    To completely disable a check, just comment it out or delete it from the file.
-
-    Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
-
- -->
-
-<module name = "Checker">
-    <property name="charset" value="UTF-8"/>
-
-    <property name="severity" value="warning"/>
-
-    <!-- Checks for whitespace                               -->
-    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-        <module name="FileTabCharacter">
-            <property name="eachLine" value="true"/>
-        </module>
-
-    <module name="TreeWalker">
-        <module name="OuterTypeFilename"/>
-        <module name="IllegalTokenText">
-            <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
-            <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
-            <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
-        </module>
-    <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-        <module name="AvoidEscapedUnicodeCharacters">
-            <property name="allowEscapesForControlCharacters" value="true"/>
-            <property name="allowByTailComment" value="true"/>
-            <property name="allowNonPrintableEscapes" value="true"/>
-        </module>
-    -->
-        <module name="LineLength">
-            <property name="max" value="120"/><!-- ODL projects use 120 max line length -->
-            <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
-        </module>
-        <module name="AvoidStarImport"/>
-    <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-        <module name="OneTopLevelClass"/>
-        <module name="NoLineWrap"/>
-    -->
-        <module name="EmptyBlock">
-            <property name="option" value="TEXT"/>
-            <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
-        </module>
-        <module name="NeedBraces"/>
-        <module name="LeftCurly">
-            <property name="maxLineLength" value="100"/>
-        </module>
-        <module name="RightCurly"/>
-        <module name="RightCurly">
-            <property name="option" value="alone"/>
-            <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
-        </module>
-        <module name="WhitespaceAround">
-            <property name="allowEmptyConstructors" value="true"/>
-            <property name="allowEmptyMethods" value="true"/>
-        <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-            <property name="allowEmptyTypes" value="true"/>
-            <property name="allowEmptyLoops" value="true"/>
-        -->
-            <message key="ws.notFollowed"
-             value="WhitespaceAround: ''{0}'' is not followed by whitespace."/>
-             <message key="ws.notPreceded"
-             value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
-        </module>
-        <module name="OneStatementPerLine"/>
-        <module name="MultipleVariableDeclarations"/>
-        <module name="ArrayTypeStyle"/>
-        <module name="MissingSwitchDefault"/>
-        <module name="FallThrough"/>
-        <module name="UpperEll"/>
-        <module name="ModifierOrder"/>
-    <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-        <module name="EmptyLineSeparator">
-            <property name="allowNoEmptyLineBetweenFields" value="true"/>
-        </module>
-        <module name="SeparatorWrap">
-            <property name="tokens" value="DOT"/>
-            <property name="option" value="nl"/>
-        </module>
-        <module name="SeparatorWrap">
-            <property name="tokens" value="COMMA"/>
-            <property name="option" value="EOL"/>
-        </module>
-    -->
-        <module name="PackageName">
-            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
-            <message key="name.invalidPattern"
-             value="Package name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="TypeName">
-            <message key="name.invalidPattern"
-             value="Type name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="MemberName">
-            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
-            <message key="name.invalidPattern"
-             value="Member name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="ParameterName">
-            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
-            <message key="name.invalidPattern"
-             value="Parameter name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="LocalVariableName">
-            <property name="tokens" value="VARIABLE_DEF"/>
-            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
-        <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-            <property name="allowOneCharVarInForLoop" value="true"/>
-        -->
-            <message key="name.invalidPattern"
-             value="Local variable name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="ClassTypeParameterName">
-            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
-            <message key="name.invalidPattern"
-             value="Class type name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="MethodTypeParameterName">
-            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
-            <message key="name.invalidPattern"
-             value="Method type name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-        <module name="NoFinalizer"/>
-        <module name="GenericWhitespace">
-            <message key="ws.followed"
-             value="GenericWhitespace ''{0}'' is followed by whitespace."/>
-             <message key="ws.preceded"
-             value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
-             <message key="ws.illegalFollow"
-             value="GenericWhitespace ''{0}'' should followed by whitespace."/>
-             <message key="ws.notPreceded"
-             value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
-        </module>
-        <module name="Indentation">
-            <property name="basicOffset" value="4"/>
-            <property name="braceAdjustment" value="0"/>
-            <property name="caseIndent" value="4"/>
-            <property name="throwsIndent" value="4"/>
-        <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-            <property name="lineWrappingIndentation" value="4"/>
-            <property name="arrayInitIndent" value="2"/>
-        -->
-        </module>
-    <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-        <module name="AbbreviationAsWordInName">
-            <property name="ignoreFinal" value="false"/>
-            <property name="allowedAbbreviationLength" value="1"/>
-        </module>
-        <module name="OverloadMethodsDeclarationOrder"/>
-        <module name="VariableDeclarationUsageDistance"/>
-        <module name="CustomImportOrder">
-            <property name="thirdPartyPackageRegExp" value=".*"/>
-            <property name="specialImportsRegExp" value="com.google"/>
-            <property name="sortImportsInGroupAlphabetically" value="true"/>
-            <property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"/>
-        </module>
-    -->
-        <module name="MethodParamPad"/>
-        <module name="OperatorWrap">
-            <property name="option" value="NL"/>
-            <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
-        </module>
-    <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-        <module name="AnnotationLocation">
-            <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
-        </module>
-        <module name="AnnotationLocation">
-            <property name="tokens" value="VARIABLE_DEF"/>
-            <property name="allowSamelineMultipleAnnotations" value="true"/>
-        </module>
-        <module name="NonEmptyAtclauseDescription"/>
-        <module name="JavadocTagContinuationIndentation"/>
-        <module name="SummaryJavadocCheck">
-            <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
-        </module>
-        <module name="JavadocParagraph"/>
-        <module name="AtclauseOrder">
-            <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
-            <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
-        </module>
-    -->
-        <module name="JavadocMethod">
-            <property name="scope" value="public"/>
-            <property name="allowMissingParamTags" value="true"/>
-            <property name="allowMissingThrowsTags" value="true"/>
-            <property name="allowMissingReturnTag" value="true"/>
-        <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-            <property name="minLineCount" value="2"/>
-            <property name="allowedAnnotations" value="Override, Test"/>
-        -->
-            <property name="allowThrowsTagsForSubclasses" value="true"/>
-        </module>
-        <module name="MethodName">
-            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
-            <message key="name.invalidPattern"
-             value="Method name ''{0}'' must match pattern ''{1}''."/>
-        </module>
-    <!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
-        <module name="SingleLineJavadoc"/>
-    -->
-    </module>
-</module>
index bcfcf19d100ac1e680da7920777520fcb1fd7078..0db9870edfbc6c2aa7abc80e8026a45a97162ec1 100644 (file)
@@ -32,11 +32,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-inet-types</artifactId>
+      <artifactId>ietf-inet-types-2013-07-15</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>ietf-yang-types</artifactId>
+      <artifactId>ietf-yang-types-20130715</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
index ddeba822902703a5f2bbffaa96e4995db7d31129..e741e27f0a49343ded97b4ece1c859ec37417aec 100644 (file)
@@ -17,7 +17,7 @@ module odl-interface {
 
     import ietf-inet-types {
         prefix inet;
-        revision-date "2010-09-24";
+        revision-date "2013-07-15";
     }
 
     import opendaylight-inventory {
@@ -295,4 +295,4 @@ module odl-interface {
             }
         }
     }
-}
\ No newline at end of file
+}
index e463b46b5daf8a9825fcd1bde9c31d761fed1afe..d48e77209ee83e4af1f65d87a476fbdb937e21d6 100644 (file)
@@ -31,7 +31,7 @@ import org.opendaylight.genius.interfacemanager.statusanddiag.InterfaceStatusMon
 import org.opendaylight.genius.mdsalutil.ActionInfo;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
@@ -93,6 +93,8 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable
     private InterfaceManagerRpcService interfaceManagerRpcService;
     private BindingAwareBroker.RpcRegistration<OdlInterfaceRpcService> rpcRegistration;
     private NodeConnectorStatsImpl nodeConnectorStatsManager;
+    private CacheInterfaceConfigListener cacheInterfaceConfigListener;
+    private CacheInterfaceStateListener cacheInterfaceStateListener;
 
     public void setRpcProviderRegistry(RpcProviderRegistry rpcProviderRegistry) {
         this.rpcProviderRegistry = rpcProviderRegistry;
@@ -157,6 +159,12 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable
             alivenessMonitorListener = new org.opendaylight.genius.interfacemanager.listeners.AlivenessMonitorListener(dataBroker);
             notificationService.registerNotificationListener(alivenessMonitorListener);
 
+            cacheInterfaceConfigListener = new CacheInterfaceConfigListener(dataBroker);
+            cacheInterfaceConfigListener.registerListener(dataBroker);
+
+            cacheInterfaceStateListener = new CacheInterfaceStateListener(dataBroker);
+            cacheInterfaceStateListener.registerListener(dataBroker);
+
             //Initialize nodeconnectorstatsimpl
             nodeConnectorStatsManager = new NodeConnectorStatsImpl(dataBroker, notificationService,
                     session.getRpcService(OpendaylightPortStatisticsService.class), session.getRpcService(OpendaylightFlowTableStatisticsService.class));
@@ -191,6 +199,8 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable
         LOG.info("InterfacemgrProvider Closed");
         interfaceConfigListener.close();
         rpcRegistration.close();
+        cacheInterfaceConfigListener.close();
+        cacheInterfaceStateListener.close();
     }
 
     public RpcProviderRegistry getRpcProviderRegistry() {
@@ -446,4 +456,4 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable
         return InterfaceManagerCommonUtils.getAllTunnelInterfaces(dataBroker,
                 InterfaceInfo.InterfaceType.VXLAN_TRUNK_INTERFACE);
     }
-}
\ No newline at end of file
+}
index 9cf6cad26c02494fc9b1450a613b9f41df1c2f3a..94c9ad98b7b30ed7addf84a71da96315796ed090 100644 (file)
@@ -128,7 +128,7 @@ public class AlivenessMonitorUtils {
         }
     }
 
-    private static org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.endpoint.endpoint.type.Interface getInterfaceForMonitoring(String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress ipAddress) {
+    private static org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.endpoint.endpoint.type.Interface getInterfaceForMonitoring(String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress ipAddress) {
         return new org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.endpoint.
                 endpoint.type.InterfaceBuilder().setInterfaceIp(ipAddress).setInterfaceName(interfaceName).build();
     }
@@ -273,4 +273,4 @@ public class AlivenessMonitorUtils {
                 .setMonitorInterval(MONITORING_INTERVAL).setMonitorWindow(MONITORING_WINDOW).setProtocolType(etherType);
         return profileBuilder.build();
     }
-}
\ No newline at end of file
+}
index 1c62b69198762270b62057ab90dede3b3cd56850..60f8e6e81cc19289665c89dc23d27c2e58601b4c 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.genius.interfacemanager.commons;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.ConcurrentHashMap;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -52,6 +53,9 @@ import java.util.List;
 
 public class InterfaceManagerCommonUtils {
     private static final Logger LOG = LoggerFactory.getLogger(InterfaceManagerCommonUtils.class);
+    private static ConcurrentHashMap<String, Interface> interfaceConfigMap = new ConcurrentHashMap<String, Interface>();
+    private static ConcurrentHashMap<String, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface>
+        interfaceStateMap = new ConcurrentHashMap<String, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface>();
     public static NodeConnector getNodeConnectorFromInventoryOperDS(NodeConnectorId nodeConnectorId,
                                                                     DataBroker dataBroker) {
         NodeId nodeId = IfmUtil.getNodeIdFromNodeConnectorId(nodeConnectorId);
@@ -103,26 +107,44 @@ public class InterfaceManagerCommonUtils {
     }
 
     public static Interface getInterfaceFromConfigDS(String interfaceName, DataBroker dataBroker) {
-        InterfaceKey interfaceKey = new InterfaceKey(interfaceName);
-        return getInterfaceFromConfigDS(interfaceKey, dataBroker);
+        Interface iface = null;
+        iface = interfaceConfigMap.get(interfaceName);
+        if (iface != null) {
+            return iface;
+        }
+        InstanceIdentifier<Interface> interfaceId = getInterfaceIdentifier(new InterfaceKey(interfaceName));
+        Optional<Interface> interfaceOptional =
+            IfmUtil.read(LogicalDatastoreType.CONFIGURATION, interfaceId, dataBroker);
+        if (interfaceOptional.isPresent()) {
+            iface = interfaceOptional.get();
+            interfaceConfigMap.put(iface.getName(), iface);
+        }
+
+        return iface;
     }
 
+    @Deprecated
     public static Interface getInterfaceFromConfigDS(InterfaceKey interfaceKey, DataBroker dataBroker) {
-        InstanceIdentifier<Interface> interfaceId = getInterfaceIdentifier(interfaceKey);
-        Optional<Interface> interfaceOptional = IfmUtil.read(LogicalDatastoreType.CONFIGURATION, interfaceId, dataBroker);
-        if (!interfaceOptional.isPresent()) {
-            return null;
-        }
-
-        return interfaceOptional.get();
+        return getInterfaceFromConfigDS(interfaceKey.getName(), dataBroker);
     }
 
     public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface getInterfaceStateFromOperDS(String interfaceName, DataBroker dataBroker) {
-        InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateId =
-                IfmUtil.buildStateInterfaceId(interfaceName);
-        return getInterfaceStateFromOperDS(ifStateId, dataBroker);
+        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState =
+            interfaceStateMap.get(interfaceName);
+        if(ifState != null) {
+            return ifState;
+        }
+        Optional<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateOptional =
+            IfmUtil.read(LogicalDatastoreType.OPERATIONAL,
+                IfmUtil.buildStateInterfaceId(interfaceName), dataBroker);
+        if (ifStateOptional.isPresent()) {
+            ifState = ifStateOptional.get();
+            interfaceStateMap.put(ifState.getName(), ifState);
+        }
+        return ifState;
     }
 
+    @Deprecated
     public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface getInterfaceStateFromOperDS
             (InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateId, DataBroker dataBroker) {
         Optional<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateOptional =
@@ -372,4 +394,20 @@ public class InterfaceManagerCommonUtils {
         return false;
     }
 
+    // Cache Util methods
+    public static void addInterfaceToCache(Interface iface) {
+        interfaceConfigMap.put(iface.getName(), iface);
+    }
+
+    public static void removeFromInterfaceCache(Interface iface) {
+        interfaceConfigMap.remove(iface.getName(), iface);
+    }
+
+    public static void addInterfaceStateToCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface iface) {
+        interfaceStateMap.put(iface.getName(), iface);
+    }
+
+    public static void removeFromInterfaceStateCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface iface) {
+        interfaceStateMap.remove(iface.getName(), iface);
+    }
 }
\ No newline at end of file
diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceConfigListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceConfigListener.java
new file mode 100644 (file)
index 0000000..fbb8e40
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ *
+ * 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
+ */
+
+package org.opendaylight.genius.interfacemanager.listeners;
+
+import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+
+/**
+ * This class listens for interface creation/removal/update in Configuration DS.
+ * This is used to handle interfaces for base of-ports.
+ */
+public class CacheInterfaceConfigListener implements ClusteredDataTreeChangeListener<Interface> {
+    private static final Logger LOG = LoggerFactory.getLogger(CacheInterfaceConfigListener.class);
+    private DataBroker db;
+    private ListenerRegistration<CacheInterfaceConfigListener> registration;
+
+    public CacheInterfaceConfigListener(DataBroker broker) {
+        this.db = broker;
+        registerListener(db);
+    }
+
+    public void registerListener(DataBroker db) {
+        final DataTreeIdentifier<Interface> treeId =
+                        new DataTreeIdentifier<Interface>(LogicalDatastoreType.CONFIGURATION, getWildcardPath());
+        try {
+            LOG.trace("Registering on path: {}", treeId);
+            registration = db.registerDataTreeChangeListener(treeId, CacheInterfaceConfigListener.this);
+        } catch (final Exception e) {
+            LOG.warn("CacheInterfaceConfigListener registration failed", e);
+        }
+    }
+    protected InstanceIdentifier<Interface> getWildcardPath() {
+        return InstanceIdentifier.create(Interfaces.class).child(Interface.class);
+    }
+
+    public void close() throws Exception {
+        if(registration != null) {
+            registration.close();
+        }
+    }
+
+    @Override
+    public void onDataTreeChanged(Collection<DataTreeModification<Interface>> changes) {
+        for (DataTreeModification<Interface> change : changes) {
+        final InstanceIdentifier<Interface> key = change.getRootPath().getRootIdentifier();
+        final DataObjectModification<Interface> mod = change.getRootNode();
+            switch (mod.getModificationType()) {
+            case DELETE:
+                InterfaceManagerCommonUtils.removeFromInterfaceCache(mod.getDataBefore());
+                break;
+            case SUBTREE_MODIFIED:
+            case WRITE:
+                InterfaceManagerCommonUtils.addInterfaceToCache(mod.getDataAfter());
+                break;
+            default:
+                throw new IllegalArgumentException("Unhandled modification type " + mod.getModificationType());
+            }
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheInterfaceStateListener.java
new file mode 100644 (file)
index 0000000..cc2424a
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ *
+ * 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
+ */
+
+package org.opendaylight.genius.interfacemanager.listeners;
+
+import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Collection;
+
+/**
+ * This class listens for interface creation/removal/update in Configuration DS.
+ * This is used to handle interfaces for base of-ports.
+ */
+public class CacheInterfaceStateListener implements ClusteredDataTreeChangeListener<Interface> {
+    private static final Logger LOG = LoggerFactory.getLogger(CacheInterfaceStateListener.class);
+    private DataBroker db;
+    private ListenerRegistration<CacheInterfaceStateListener> registration;
+
+    public CacheInterfaceStateListener(DataBroker broker) {
+        this.db = broker;
+        registerListener(db);
+    }
+
+    public void registerListener(DataBroker db) {
+        final DataTreeIdentifier<Interface> treeId =
+                        new DataTreeIdentifier<Interface>(LogicalDatastoreType.CONFIGURATION, getWildcardPath());
+        try {
+            LOG.trace("Registering on path: {}", treeId);
+            registration = db.registerDataTreeChangeListener(treeId, CacheInterfaceStateListener.this);
+        } catch (final Exception e) {
+            LOG.warn("CacheInterfaceConfigListener registration failed", e);
+        }
+    }
+
+    private InstanceIdentifier<Interface> getWildcardPath() {
+        return InstanceIdentifier.create(InterfacesState.class).child(Interface.class);
+    }
+
+    public void close() throws Exception {
+        if(registration != null) {
+            registration.close();
+        }
+    }
+
+    @Override
+    public void onDataTreeChanged(Collection<DataTreeModification<Interface>> changes) {
+        for (DataTreeModification<Interface> change : changes) {
+        final InstanceIdentifier<Interface> key = change.getRootPath().getRootIdentifier();
+        final DataObjectModification<Interface> mod = change.getRootNode();
+            switch (mod.getModificationType()) {
+            case DELETE:
+                InterfaceManagerCommonUtils.removeFromInterfaceStateCache(mod.getDataBefore());
+                break;
+            case SUBTREE_MODIFIED:
+            case WRITE:
+                InterfaceManagerCommonUtils.addInterfaceStateToCache(mod.getDataAfter());
+                break;
+            default:
+                throw new IllegalArgumentException("Unhandled modification type " + mod.getModificationType());
+            }
+        }
+    }
+
+}
\ No newline at end of file
index 3b3c6ffd57a789b0b82a8ee8f3b439c162487a9c..22523f188cba9f8701c02d221936601230c8f2dd 100644 (file)
@@ -86,7 +86,7 @@ public class InterfaceInventoryStateListener extends AsyncDataTreeChangeListener
 
         InterfaceStateUpdateWorker portStateUpdateWorker = new InterfaceStateUpdateWorker(key, fcNodeConnectorOld,
                 fcNodeConnectorNew, portName);
-        coordinator.enqueueJob(portName, portStateUpdateWorker);
+        coordinator.enqueueJob(portName, portStateUpdateWorker, 3);
     }
 
     @Override
@@ -100,7 +100,7 @@ public class InterfaceInventoryStateListener extends AsyncDataTreeChangeListener
 
         InterfaceStateAddWorker ifStateAddWorker = new InterfaceStateAddWorker(idManager, nodeConnectorId,
                 fcNodeConnectorNew, portName);
-        coordinator.enqueueJob(portName, ifStateAddWorker);
+        coordinator.enqueueJob(portName, ifStateAddWorker, 3);
     }
 
     /**
@@ -131,7 +131,7 @@ public class InterfaceInventoryStateListener extends AsyncDataTreeChangeListener
 
         InterfaceStateRemoveWorker portStateRemoveWorker = new InterfaceStateRemoveWorker(idManager,
                 nodeConnectorIdNew, nodeConnectorIdOld, flowCapableNodeConnectorOld, portName);
-        coordinator.enqueueJob(portName, portStateRemoveWorker);
+        coordinator.enqueueJob(portName, portStateRemoveWorker, 3);
     }
 
     private class InterfaceStateAddWorker implements Callable {
index ac250106a4c4009f36ab91cfb4c9baf0875dd330..ed6a28dbd44f307fc23f7b435b7ff12ebc34a82a 100644 (file)
@@ -13,7 +13,7 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils;
 import org.opendaylight.genius.interfacemanager.renderer.hwvtep.utilities.SouthboundUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeVxlanOverIpv4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorAugmentation;
index 8290bc9a34a30b6cea454d2eaea01018b8f44302..970ab5dc5ca0e638702e8e3b3f9575ee0eef0124 100644 (file)
@@ -12,8 +12,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.interfacemanager.IfmUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorAugmentationBuilder;
@@ -197,4 +197,4 @@ public class SouthboundUtils {
         return new BfdParamsBuilder().setBfdParamKey(key).setKey(new BfdParamsKey(key))
                 .setBfdParamValue(value).build();
     }
-}
\ No newline at end of file
+}
index 2e730f1ce050856e10c7f2f512e383964e2c162d..db9459942d0c4eb986ce6c91e83c18e9e826e242 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUt
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.AlivenessMonitorService;
@@ -151,4 +151,4 @@ public class OvsInterfaceStateUpdateHelper {
                                        boolean opStateModified){
         return modifyOpState(iface, opStateModified) && iface != null && iface.getAugmentation(IfTunnel.class) != null;
     }
-}
\ No newline at end of file
+}
index 440ec8d05e15f5b94785ca95cfbc5391f4f61c76..6ae35e73a1f3c94c0cd4953782f6c72f843c404b 100644 (file)
@@ -17,8 +17,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry;
index 73305dbe194a68fe2f6e8ab79f9063cd43eff154..8bedf52df8158945850db69e66e60476c6a31f38 100644 (file)
@@ -12,7 +12,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.interfacemanager.IfmUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbPortInterfaceAttributes;
@@ -161,4 +161,4 @@ public class VlanTrunkSouthboundUtils {
         LOG.debug("Termination point InstanceIdentifier generated : {}", terminationPointPath);
         return terminationPointPath;
     }
-}
\ No newline at end of file
+}
index 2e2632ff5cf95245a0c6f35af286c2da39f97e5d..83caa0864a441d3182f40095a7caf0a1e865db5b 100644 (file)
@@ -8,22 +8,25 @@
 package org.opendaylight.genius.interfacemanager.test;
 
 import com.google.common.collect.Maps;
+import java.lang.reflect.Field;
+import java.util.concurrent.ConcurrentHashMap;
 import org.opendaylight.genius.interfacemanager.IfmConstants;
 import org.opendaylight.genius.interfacemanager.IfmUtil;
+import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils;
 import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.SouthboundUtils;
 import org.opendaylight.genius.mdsalutil.MatchInfo;
 import org.opendaylight.genius.mdsalutil.NwConstants;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.Tunnel;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
@@ -347,4 +350,23 @@ public class InterfaceManagerTestUtil {
         tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build());
         return tpBuilder.build();
     }
+
+    public static void clearInterfaceCaches(){
+        Field configMap = null;
+        try {
+            configMap = InterfaceManagerCommonUtils.class.getDeclaredField("interfaceConfigMap");
+            configMap.setAccessible(true);
+            ConcurrentHashMap<String, Interface> refMap = (ConcurrentHashMap<String, Interface>) configMap.get(new InterfaceManagerCommonUtils());
+            refMap.clear();
+            Field stateMap = InterfaceManagerCommonUtils.class.getDeclaredField("interfaceStateMap");
+            stateMap.setAccessible(true);
+            ConcurrentHashMap<String, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> stateMapRef =
+                (ConcurrentHashMap<String, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface>) stateMap.get(new InterfaceManagerCommonUtils());
+            stateMapRef.clear();
+        } catch (NoSuchFieldException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
 }
index 02c7abd86ec137df39a781639593899eed78c25a..1ca2db713ab45652e4fa5b60870b9d6b75a56e28 100644 (file)
@@ -33,7 +33,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.re
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
@@ -116,6 +116,7 @@ public class StateInterfaceTest {
                 any(DataChangeScope.class)))
                 .thenReturn(dataChangeListenerRegistration);
         setupMocks();
+        InterfaceManagerTestUtil.clearInterfaceCaches();
     }
 
     private void setupMocks() {
@@ -180,6 +181,8 @@ public class StateInterfaceTest {
                 LogicalDatastoreType.CONFIGURATION, higherLevelInterfaceParentEntryIdentifier);
         doReturn(Futures.immediateCheckedFuture(expectedChildInterface)).when(mockReadTx).read(
                 LogicalDatastoreType.CONFIGURATION, childInterfaceInstanceIdentifier);
+        doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(
+                LogicalDatastoreType.OPERATIONAL, ifIndexId);
 
         AllocateIdInput getIdInput = new AllocateIdInputBuilder()
                 .setPoolName(IfmConstants.IFM_IDPOOL_NAME)
@@ -318,6 +321,6 @@ public class StateInterfaceTest {
 
         updateHelper.updateState(fcNodeConnectorId, alivenessMonitorService, dataBroker, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNew, fcNodeConnectorOld);
 
-        verify(mockWriteTx).merge(LogicalDatastoreType.OPERATIONAL,interfaceStateIdentifier,parentInterface, false);
+        verify(mockWriteTx).merge(LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier, parentInterface, false);
     }
-}
\ No newline at end of file
+}
index 96ac6f6cb31dfc557dfceeae9b14351b2e6d6928..b69466826053a91c931b13ba46c3bc48aa0987a2 100644 (file)
@@ -5,6 +5,7 @@ package org.opendaylight.genius.interfacemanager.test;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -70,7 +71,7 @@ public class TopologyStateInterfaceTest {
     @Mock ListenerRegistration<DataChangeListener> dataChangeListenerRegistration;
     @Mock ReadOnlyTransaction mockReadTx;
     @Mock WriteTransaction mockWriteTx;
-    @Mock OvsdbTerminationPointAugmentation newTerminationPoint;
+    OvsdbTerminationPointAugmentation newTerminationPoint;
 
     OvsInterfaceTopologyStateAddHelper addHelper;
     OvsInterfaceTopologyStateRemoveHelper removeHelper;
@@ -87,12 +88,21 @@ public class TopologyStateInterfaceTest {
         setupMocks();
     }
 
+    @After
+    public void tearDown(){
+        InterfaceManagerTestUtil.clearInterfaceCaches();
+    }
+
     private void setupMocks()
     {
         Node node = new NodeBuilder().setKey(null).setNodeId(null).build();
-        tunnelInterfaceEnabled = InterfaceManagerTestUtil.buildTunnelInterface(dpId, InterfaceManagerTestUtil.tunnelInterfaceName, "Test Interface1", true, TunnelTypeGre.class
-                , "192.168.56.101", "192.168.56.102");
-        bridgeIid = InterfaceManagerTestUtil.getOvsdbAugmentationInstanceIdentifier(InterfaceManagerTestUtil.interfaceName, node);
+        tunnelInterfaceEnabled = InterfaceManagerTestUtil.buildTunnelInterface(dpId,
+            InterfaceManagerTestUtil.tunnelInterfaceName, "Test Interface1", true, TunnelTypeGre.class,
+            "192.168.56.101", "192.168.56.102");
+        newTerminationPoint = new OvsdbTerminationPointAugmentationBuilder()
+            .setName(InterfaceManagerTestUtil.tunnelInterfaceName).build();
+        bridgeIid = InterfaceManagerTestUtil
+            .getOvsdbAugmentationInstanceIdentifier(InterfaceManagerTestUtil.tunnelInterfaceName, node);
         bridgeNew = InterfaceManagerTestUtil.getOvsdbBridgeRef("s1");
         bridgeOld = InterfaceManagerTestUtil.getOvsdbBridgeRef("s1");
         bridgeEntryIid = InterfaceMetaUtils.getBridgeEntryIdentifier(new BridgeEntryKey(dpId));
@@ -191,8 +201,6 @@ public class TopologyStateInterfaceTest {
 
         List<InterfaceBfdStatus> interfaceBfdStatus = new ArrayList<InterfaceBfdStatus>();
         interfaceBfdStatus.add(new InterfaceBfdStatusBuilder().setBfdStatusKey(SouthboundUtils.BFD_OP_STATE).setBfdStatusValue(SouthboundUtils.BFD_STATE_UP).build());
-        List bfdStatusSpy = spy(interfaceBfdStatus);
-        when(newTerminationPoint.getInterfaceBfdStatus()).thenReturn(bfdStatusSpy);
 
         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = new InterfaceBuilder().setKey(new InterfaceKey(InterfaceManagerTestUtil.interfaceName)).build();
         Optional<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> expectedInterface = Optional.of(ifState);
@@ -203,9 +211,9 @@ public class TopologyStateInterfaceTest {
 
         //verify
         InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateId =
-                IfmUtil.buildStateInterfaceId(null);
-        InterfaceBuilder ifaceBuilder = new InterfaceBuilder().setOperStatus(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Up);
-        ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(null));
+            IfmUtil.buildStateInterfaceId(InterfaceManagerTestUtil.tunnelInterfaceName);
+        InterfaceBuilder ifaceBuilder = new InterfaceBuilder().setOperStatus(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Down);
+        ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(InterfaceManagerTestUtil.tunnelInterfaceName));
         verify(mockWriteTx).merge(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build());
 
     }
index 1d00d888d11461bf578f7d5a9a23e00d6191a036..39e631c85cbd0c860ccf3299754c73a5fb169ce6 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.genius.interfacemanager.test;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -95,8 +96,7 @@ public class TunnelInterfaceConfigurationTest {
     @Mock ListenerRegistration<DataChangeListener> dataChangeListenerRegistration;
     @Mock ReadOnlyTransaction mockReadTx;
     @Mock WriteTransaction mockWriteTx;
-    @Mock
-    IMdsalApiManager mdsalApiManager;
+    @Mock IMdsalApiManager mdsalApiManager;
     OvsInterfaceConfigAddHelper addHelper;
     OvsInterfaceConfigRemoveHelper removeHelper;
     OvsInterfaceConfigUpdateHelper updateHelper;
@@ -154,6 +154,11 @@ public class TunnelInterfaceConfigurationTest {
         when(dataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTx);
     }
 
+    @After
+    public void tearDown(){
+        InterfaceManagerTestUtil.clearInterfaceCaches();
+    }
+
     @Test
     public void testAddGreInterfaceWhenSwitchIsNotConnected() {
         Optional<Interface> expectedInterface = Optional.of(tunnelInterfaceEnabled);
index 1e5ce1935ed22b3cdfa5b99337cfc612b20f350b..9953a2d9174bb1d14e20e59bc7ebda90aca46966 100644 (file)
@@ -96,10 +96,7 @@ public class VlanInterfaceConfigurationTest {
                 any(DataChangeScope.class)))
                 .thenReturn(dataChangeListenerRegistration);
         setupMocks();
-    }
-
-    @After
-    public void cleanUp(){
+        InterfaceManagerTestUtil.clearInterfaceCaches();
     }
 
     private void setupMocks() {
index 2f5dcd13c853066c6842d492637d5613282e4872..417e9e307b4a99e3925f73c9c3ae5355a3982b81 100644 (file)
@@ -13,7 +13,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.genius.interfacemanager.exceptions.InterfaceNotFoundException;
 import org.opendaylight.genius.mdsalutil.ActionInfo;
 import org.opendaylight.genius.mdsalutil.MatchInfo;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.itm.config.rev151102.vtep.config.schemas.VtepConfigSchema;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.vtep.config.schemas.VtepConfigSchema;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelList ;
index e77835bf56883c30ea5acd9ec1dabf0d39b90dbd..b1c631e86cd33eef786b2320aeb1ceab4dd7992b 100644 (file)
@@ -12,7 +12,7 @@ module itm-config {
     }
     import ietf-inet-types {
         prefix inet;
-        revision-date "2010-09-24";
+        revision-date "2013-07-15";
     }
     import odl-interface {
             prefix odlif;
@@ -126,4 +126,4 @@ module itm-config {
           }
        }
     }
-}
\ No newline at end of file
+}
index e8436c8c2122d2eebecd012e8596ea901d7ff0e4..868256a2a352a8e0baec18ec17d98c696e3411c1 100644 (file)
@@ -4,7 +4,7 @@ module itm-rpc {
 
     import ietf-inet-types {
         prefix inet;
-        revision-date "2010-09-24";
+        revision-date "2013-07-15";
     }
 
     import ietf-yang-types {
index 76c33ea76c97bd40dcb1aec547f109e2ab182b60..1f1f66e288d6db987f42ddde3dc5769b2fbd854d 100644 (file)
@@ -14,7 +14,7 @@ module itm-state {
 
       import ietf-inet-types {
           prefix inet;
-          revision-date "2010-09-24";
+          revision-date "2013-07-15";
       }
       import odl-interface {
           prefix odlif; revision-date "2016-04-06";
index 3a3c30770ad3b12c9fb172fcc9d53d86fb6e8d5d..80b408011bda958425d28ea976f68038a2e6c53f 100644 (file)
@@ -11,7 +11,7 @@ module itm {
     }
     import ietf-inet-types {
         prefix inet;
-        revision-date "2010-09-24";
+        revision-date "2013-07-15";
     }
     
     import odl-interface {
@@ -100,4 +100,4 @@ module itm {
             }
         }
     }
-}
\ No newline at end of file
+}
index 8179af33143c317275b1c49f04b1a7d303ebe288..c7e6fbf1d2e229028b2a9d67ccd2f66b6f9bb013 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.genius.itm.cli;
 
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsKey;
 
 public class SubnetObject {
index 807cb7494e7250ea32cff870b26772bde02f8efb..74aa845b45fd32e219395a37dc9de3c2902c900a 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.mdsalutil.MDSALDataStoreUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus;
index 8b6ecfb687fd85f1047d93737b796a21911e2f36..6180a3a07b41bbef47ea09f998cdc42d329d6767 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.genius.itm.confighelpers;
 
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 
 /**
index ed95a8a709ec75ba77f28afe0731ee8705c7f641..a94f2f49e8897e474a3f406d317b3b6778a79b0a 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
index d0b29fd21a4eb73aa692507b7b46788ef0406f4e..f5b765fb34d0193e9480968330a9451711f9a7c2 100644 (file)
@@ -13,7 +13,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.impl.ItmUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
index dd01f6fc8c511f21dcf710b965c8f44504f5dfc5..bab9f97faf8616b0c483acc14c7ed0a8ce9c8168 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase;
index da26ae4649efe70468a18497e9e32fdfdbbe2567..b552978424a8f2ac8a976658231e427257741b0a 100644 (file)
@@ -27,8 +27,8 @@ import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.mdsalutil.*;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.Tunnel;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
@@ -88,6 +88,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.UUID;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
@@ -96,7 +97,7 @@ public class ItmUtils {
     public static final String DUMMY_IP_ADDRESS = "0.0.0.0";
     public static final String TUNNEL_TYPE_VXLAN = "VXLAN";
     public static final String TUNNEL_TYPE_GRE = "GRE";
-    public static final String TUNNEL = "TUNNEL";
+    public static final String TUNNEL = "tun";
     public static ItmCache itmCache = new ItmCache();
 
     private static final Logger LOG = LoggerFactory.getLogger(ItmUtils.class);
@@ -178,7 +179,7 @@ public class ItmUtils {
         String trunkInterfaceName = String.format(  "%s:%s:%s:%s", parentInterfaceName, localHostName,
                 remoteHostName, tunnelTypeStr);
         LOG.trace("trunk interface name is {}", trunkInterfaceName);
-        trunkInterfaceName = String.format("%s:%s", TUNNEL, getUniqueId(idManager, trunkInterfaceName));
+        trunkInterfaceName = String.format("%s%s", TUNNEL, getUniqueIdString(trunkInterfaceName));
         return trunkInterfaceName;
     }
 
@@ -191,7 +192,7 @@ public class ItmUtils {
         }
         String trunkInterfaceName = String.format("%s:%s:%s:%s", parentInterfaceName, localHostName, remoteHostName, tunnelTypeStr);
         LOG.trace("Releasing Id for trunkInterface - {}", trunkInterfaceName );
-        releaseId(idManager, trunkInterfaceName) ;
+        //releaseId(idManager, trunkInterfaceName) ;
     }
 
     public static InetAddress getInetAddressFromIpAddress(IpAddress ip) {
@@ -350,6 +351,10 @@ public class ItmUtils {
         return 0;
     }
 
+    public static String getUniqueIdString(String idKey) {
+        return UUID.nameUUIDFromBytes(idKey.getBytes()).toString().substring(0, 12).replace("-", "");
+    }
+
     public static void releaseId(IdManagerService idManager, String idKey) {
         ReleaseIdInput idInput =
                 new ReleaseIdInputBuilder().setPoolName(ITMConstants.ITM_IDPOOL_NAME).setIdKey(idKey).build();
index e9860abe58a4c79595de22a8e4b07cd5ee7ac10b..257bad8c305595a0f745b179394fdb848a8f622c 100644 (file)
@@ -22,8 +22,8 @@ import org.opendaylight.genius.itm.confighelpers.ItmTepRemoveWorker;
 import org.opendaylight.genius.itm.impl.ITMManager;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
index a7741b2010b08e51612ef052cf87d0e9176fe8b4..78f1455a6c7cb2080d4fa796dfae6a90e21e44ca 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.mdsalutil.AbstractDataChangeListener;
 import org.opendaylight.genius.mdsalutil.MDSALUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.VtepConfigSchemas;
index 03eeb51f9a4879c2751d4136a7346465add13030..50f702ec4f1837249ef0984558e3fd93483eaf57 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.mdsalutil.*;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeMplsOverGre;
index c71cc0977fe489d521ac6e5655038169ca1e2e10..1d39b89bfec7e880474a081ef82154f210064e2c 100644 (file)
@@ -26,10 +26,10 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state
         .InterfaceBuilder;
index f171c89b37246305ac695797353edb661af80b35..7ce62b45d3dad365608ad382c9f763b35319ec3a 100644 (file)
@@ -25,10 +25,10 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.confighelpers.HwVtep;
 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelAddWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
@@ -304,51 +304,51 @@ public class ItmExternalTunnelAddTest {
     @Test
     public void testBuildHwVtepsTunnels(){
 
-        Interface extTunnelIf1 = ItmUtils.buildTunnelInterface(dpId1, "TUNNEL:101", String.format("%s %s", tunnelType1
+        Interface extTunnelIf1 = ItmUtils.buildTunnelInterface(dpId1, "tun030025bd04f", String.format("%s %s", tunnelType1
                         .getName(), "Trunk Interface"), true, tunnelType1, tunnelEndPointsVxlan.getIpAddress(), ipAddress1,
                 gtwyIp1, vlanId, false,true, monitorProtocol, ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL);
-        Interface hwTunnelIf2 = ItmUtils.buildHwTunnelInterface("TUNNEL:102", String.format("%s %s", tunnelType1.getName(),
+        Interface hwTunnelIf2 = ItmUtils.buildHwTunnelInterface("tun9a55a9c38f2", String.format("%s %s", tunnelType1.getName(),
                 "Trunk Interface"), true, hwVtep1.getTopo_id(), hwVtep1.getNode_id(), tunnelType1, ipAddress1, ipAddress3, gtwyIp1,
                 true, monitorProtocol, ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL);
-        Interface extTunnelIf3 = ItmUtils.buildTunnelInterface(dpId1, "TUNNEL:100", String.format("%s %s", tunnelType1
+        Interface extTunnelIf3 = ItmUtils.buildTunnelInterface(dpId1, "tun17c6e20c283", String.format("%s %s", tunnelType1
                         .getName(), "Trunk Interface"), true, tunnelType1, tunnelEndPointsVxlan.getIpAddress(), ipAddress2,
                 gtwyIp1, vlanId, false,true, monitorProtocol, ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL);
-        Interface hwTunnelIf4 = ItmUtils.buildHwTunnelInterface("TUNNEL:103", String.format("%s %s", tunnelType1.getName(),
+        Interface hwTunnelIf4 = ItmUtils.buildHwTunnelInterface("tunaa109b6c8c5", String.format("%s %s", tunnelType1.getName(),
                 "Trunk Interface"), true, hwVtep1.getTopo_id(), destination, tunnelType1, ipAddress2,
                 ipAddress3, gtwyIp1, true, monitorProtocol, ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL);
-        Interface hwTunnelIf5 = ItmUtils.buildHwTunnelInterface("TUNNEL:104", String.format("%s %s", tunnelType1.getName(),
+        Interface hwTunnelIf5 = ItmUtils.buildHwTunnelInterface("tund903ed434d5", String.format("%s %s", tunnelType1.getName(),
                 "Trunk Interface"), true, hwVtep1.getTopo_id(), hwVtep1.getNode_id(), tunnelType1, ipAddress1,
                 ipAddress2, gtwyIp1, true, monitorProtocol, ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL);
-        Interface hwTunnelIf6 = ItmUtils.buildHwTunnelInterface("TUNNEL:105", String.format("%s %s", tunnelType1
+        Interface hwTunnelIf6 = ItmUtils.buildHwTunnelInterface("tunc3315b110a6", String.format("%s %s", tunnelType1
                         .getName(), "Trunk Interface"), true, hwVtep1.getTopo_id(), destination, tunnelType1, ipAddress2,
                 ipAddress1, gtwyIp1, true, monitorProtocol, ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL);
         ExternalTunnel externalTunnel1 = ItmUtils.buildExternalTunnel(  getExternalTunnelKey(dpId1.toString()),
-                getExternalTunnelKey(source), tunnelType1, "TUNNEL:101");
+                getExternalTunnelKey(source), tunnelType1, "tun030025bd04f");
         ExternalTunnel externalTunnel2 = ItmUtils.buildExternalTunnel(  getExternalTunnelKey(source),
-                getExternalTunnelKey(dpId1.toString()), tunnelType1, "TUNNEL:102");
+                getExternalTunnelKey(dpId1.toString()), tunnelType1, "tun9a55a9c38f2");
         ExternalTunnel externalTunnel3 = ItmUtils.buildExternalTunnel(  getExternalTunnelKey(dpId1.toString()),
-                getExternalTunnelKey(destination), tunnelType1, "TUNNEL:100");
+                getExternalTunnelKey(destination), tunnelType1, "tun17c6e20c283");
         ExternalTunnel externalTunnel4 = ItmUtils.buildExternalTunnel(  getExternalTunnelKey(destination),
-                getExternalTunnelKey(dpId1.toString()), tunnelType1, "TUNNEL:103");
+                getExternalTunnelKey(dpId1.toString()), tunnelType1, "tunaa109b6c8c5");
         ExternalTunnel externalTunnel5 = ItmUtils.buildExternalTunnel(  getExternalTunnelKey(source),
-                getExternalTunnelKey(destination), tunnelType1, "TUNNEL:104");
+                getExternalTunnelKey(destination), tunnelType1, "tund903ed434d5");
         ExternalTunnel externalTunnel6 = ItmUtils.buildExternalTunnel(  getExternalTunnelKey(destination),
-                getExternalTunnelKey(source), tunnelType1, "TUNNEL:105");
+                getExternalTunnelKey(source), tunnelType1, "tunc3315b110a6");
 
         InstanceIdentifier<TransportZone> transportZoneIdentifier = InstanceIdentifier.builder(TransportZones.class).child
                 (TransportZone.class, new TransportZoneKey(transportZone1)).build();
         InstanceIdentifier<Interface> ifIID1 = InstanceIdentifier.builder(Interfaces.class).child(Interface.class, new
-                InterfaceKey("TUNNEL:101")).build();
+                InterfaceKey("tun030025bd04f")).build();
         InstanceIdentifier<Interface> ifIID2 = InstanceIdentifier.builder(Interfaces.class).child(Interface.class,
-                new InterfaceKey("TUNNEL:102")).build();
+                new InterfaceKey("tun9a55a9c38f2")).build();
         InstanceIdentifier<Interface> ifIID3 = InstanceIdentifier.builder(Interfaces.class).child(Interface.class,
-                new InterfaceKey("TUNNEL:100")).build();
+                new InterfaceKey("tun17c6e20c283")).build();
         InstanceIdentifier<Interface> ifIID4 = InstanceIdentifier.builder(Interfaces.class).child(Interface.class,
-                new InterfaceKey("TUNNEL:103")).build();
+                new InterfaceKey("tunaa109b6c8c5")).build();
         InstanceIdentifier<Interface> ifIID5 = InstanceIdentifier.builder(Interfaces.class).child(Interface.class,
-                new InterfaceKey("TUNNEL:104")).build();
+                new InterfaceKey("tund903ed434d5")).build();
         InstanceIdentifier<Interface> ifIID6 = InstanceIdentifier.builder(Interfaces.class).child(Interface.class,
-                new InterfaceKey("TUNNEL:105")).build();
+                new InterfaceKey("tunc3315b110a6")).build();
         InstanceIdentifier<ExternalTunnel> externalTunnelIdentifier1 = InstanceIdentifier.create(ExternalTunnelList
                 .class).child(ExternalTunnel.class, new ExternalTunnelKey( getExternalTunnelKey(source),
                 getExternalTunnelKey(dpId1.toString()), tunnelType1));
@@ -378,18 +378,18 @@ public class ItmExternalTunnelAddTest {
         externalTunnelAddWorker.buildHwVtepsTunnels(dataBroker,idManagerService,null,cfgdHwVtepsList);
 
         verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,ifIID1,extTunnelIf1,true);
-        verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,ifIID2,hwTunnelIf2,true);
-        verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,ifIID3,extTunnelIf3,true);
         verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier1,
                 externalTunnel1, true);
+        verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,ifIID2,hwTunnelIf2,true);
         verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier2,
                 externalTunnel2, true);
+        verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,ifIID3,extTunnelIf3,true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier3,
                 externalTunnel3, true);
-        verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,ifIID5,hwTunnelIf5,true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,ifIID4,hwTunnelIf4,true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier4,
                 externalTunnel4, true);
+        verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,ifIID5,hwTunnelIf5,true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier5,
                 externalTunnel5, true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,ifIID6,hwTunnelIf6,true);
index 6e2db7cc83d2891c6a571fb3fba2424aa31c3f38..0fbfe857f7b36b2d4b0b0666ba16f5219d1cb6a1 100644 (file)
@@ -25,10 +25,10 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.confighelpers.HwVtep;
 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelDeleteWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.*;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
index 0f714edbf92466c9741a29c2b8b650a7cd91f164..4647c1378649d264e5c79126a3ae3d3e49470ef5 100644 (file)
@@ -26,10 +26,10 @@ import org.opendaylight.genius.interfacemanager.globals.IfmConstants;
 import org.opendaylight.genius.itm.confighelpers.ItmInternalTunnelAddWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.*;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre;
index c754083cc3df42e10d9ba4801b05e2f8a37422dc..2bf3fce6cb35da8426320985705249830b011faf 100644 (file)
@@ -24,10 +24,10 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.confighelpers.ItmInternalTunnelDeleteWorker;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
index c611d407cce6233c3081c0541742cf47599c2b51..31e99ff9f825eb4c4f44d015fc1d721da8a97255 100644 (file)
@@ -28,10 +28,10 @@ import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.rpc.ItmManagerRpcService;
 import org.opendaylight.genius.mdsalutil.*;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
index d44238a910cc6e9f84a162a7d004f72f2a5113af..a94058fe29462a0e5121e2a91edb0ab336e38e24 100644 (file)
@@ -10,8 +10,8 @@ package org.opendaylight.genius.mdsalutil;
 import java.math.BigInteger;
 import java.net.InetAddress;
 
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
@@ -42,8 +42,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
index e340e08245af3406f67830171bc298784e43102f..fa86dc71684d43cb472e834bb717c7a64cd2c977 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.genius.mdsalutil;
 
 import java.math.BigInteger;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
@@ -26,8 +27,8 @@ public class FlowEntity extends AbstractSwitchEntity {
     private int m_nIdleTimeOut;
     private int m_nHardTimeOut;
     private BigInteger m_biCookie;
-    private List<MatchInfoBase> m_listMatchInfo;
-    private List<InstructionInfo> m_listInstructionInfo;
+    private List<MatchInfoBase> m_listMatchInfo = new ArrayList<>();
+    private List<InstructionInfo> m_listInstructionInfo = new ArrayList<>();
 
     private boolean m_bStrictFlag;
     private boolean m_bSendFlowRemFlag;
index f39c1f45a61f7fd532b3782f7db0c6609384df89..05efdd0644112c112fda4b7ac8a8d28ee935c749 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
index 39f4b0b0bd009d02bbe38f516eae14c507a751c0..1079c87ab9fba447ab8e70bbb63f0a8bd3e88b5f 100644 (file)
@@ -10,17 +10,21 @@ package org.opendaylight.genius.mdsalutil;
 import java.math.BigInteger;
 import java.util.Map;
 
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
@@ -34,9 +38,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSha;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTha;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Type;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Type;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst;
@@ -251,7 +259,7 @@ public enum MatchFieldType {
             }
         }
     },
-    
+
     ipv4_destination {
         @Override
         protected Class<? extends MatchField> getMatchType() {
@@ -396,6 +404,66 @@ public enum MatchFieldType {
         }
     },
 
+    arp_tha {
+        @Override
+        protected Class<? extends MatchField> getMatchType() {
+            return ArpTha.class;
+        }
+
+        @Override
+        public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
+
+            if (arpMatchBuilder == null) {
+                arpMatchBuilder = new ArpMatchBuilder();
+                mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
+            }
+
+            ArpTargetHardwareAddressBuilder arpSrc = new ArpTargetHardwareAddressBuilder();
+            arpSrc.setAddress(new MacAddress(matchInfo.getStringMatchValues()[0]));
+            arpMatchBuilder.setArpTargetHardwareAddress(arpSrc.build());
+        }
+
+        @Override
+        public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
+
+            if (arpMatchBuilder != null) {
+                matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
+            }
+        }
+    },
+
+    arp_sha {
+        @Override
+        protected Class<? extends MatchField> getMatchType() {
+            return ArpSha.class;
+        }
+
+        @Override
+        public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.get(ArpMatchBuilder.class);
+
+            if (arpMatchBuilder == null) {
+                arpMatchBuilder = new ArpMatchBuilder();
+                mapMatchBuilder.put(ArpMatchBuilder.class, arpMatchBuilder);
+            }
+
+            ArpSourceHardwareAddressBuilder arpSrc = new ArpSourceHardwareAddressBuilder();
+            arpSrc.setAddress(new MacAddress(matchInfo.getStringMatchValues()[0]));
+            arpMatchBuilder.setArpSourceHardwareAddress(arpSrc.build());
+        }
+
+        @Override
+        public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            ArpMatchBuilder arpMatchBuilder = (ArpMatchBuilder) mapMatchBuilder.remove(ArpMatchBuilder.class);
+
+            if (arpMatchBuilder != null) {
+                matchBuilderInOut.setLayer3Match(arpMatchBuilder.build());
+            }
+        }
+    },
+
     metadata {
         @Override
         protected Class<? extends MatchField> getMatchType() {
@@ -660,6 +728,64 @@ public enum MatchFieldType {
                 matchBuilderInOut.setVlanMatch(vlanMatchBuilder.build());
             }
         }
+    },
+
+    icmp_v4 {
+        @Override
+        protected Class<? extends MatchField> getMatchType() {
+            return Icmpv4Type.class;
+        }
+
+        @Override
+        public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            Icmpv4MatchBuilder icmpv4MatchBuilder = (Icmpv4MatchBuilder) mapMatchBuilder.get(Icmpv4MatchBuilder.class);
+
+            if (icmpv4MatchBuilder == null) {
+                icmpv4MatchBuilder = new Icmpv4MatchBuilder();
+                mapMatchBuilder.put(Icmpv4MatchBuilder.class, icmpv4MatchBuilder);
+            }
+
+            icmpv4MatchBuilder.setIcmpv4Type((short) matchInfo.getMatchValues()[0]);
+            icmpv4MatchBuilder.setIcmpv4Code((short) matchInfo.getMatchValues()[1]);
+        }
+
+        @Override
+        public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            Icmpv4MatchBuilder icmpv4MatchBuilder = (Icmpv4MatchBuilder) mapMatchBuilder.remove(Icmpv4MatchBuilder.class);
+
+            if (icmpv4MatchBuilder != null) {
+                matchBuilderInOut.setIcmpv4Match(icmpv4MatchBuilder.build());
+            }
+        }
+    },
+
+    icmp_v6 {
+        @Override
+        protected Class<? extends MatchField> getMatchType() {
+            return Icmpv6Type.class;
+        }
+
+        @Override
+        public void createInnerMatchBuilder(MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            Icmpv6MatchBuilder icmpv6MatchBuilder = (Icmpv6MatchBuilder) mapMatchBuilder.get(Icmpv6MatchBuilder.class);
+
+            if (icmpv6MatchBuilder == null) {
+                icmpv6MatchBuilder = new Icmpv6MatchBuilder();
+                mapMatchBuilder.put(Icmpv6MatchBuilder.class, icmpv6MatchBuilder);
+            }
+
+            icmpv6MatchBuilder.setIcmpv6Type((short) matchInfo.getMatchValues()[0]);
+            icmpv6MatchBuilder.setIcmpv6Code((short) matchInfo.getMatchValues()[1]);
+        }
+
+        @Override
+        public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map<Class<?>, Object> mapMatchBuilder) {
+            Icmpv6MatchBuilder icmpv6MatchBuilder = (Icmpv6MatchBuilder) mapMatchBuilder.remove(VlanMatchBuilder.class);
+
+            if (icmpv6MatchBuilder != null) {
+                matchBuilderInOut.setIcmpv6Match(icmpv6MatchBuilder.build());
+            }
+        }
     };
 
 
index e13da3a2de75dc0be2ff4a0e664b4ae1fb1aedcf..c0a25792f9693f98afec5588528aa147216af349 100644 (file)
@@ -12,12 +12,15 @@ public class NwConstants {
     // EthType Values
     public static final int ETHTYPE_802_1Q            = 0X8100;
     public static final int ETHTYPE_IPV4              = 0X0800;
+    public static final int ETHTYPE_IPV6              = 0x86dd;
     public static final int ETHTYPE_ARP               = 0X0806;
 
     public static final int ETHTYPE_MPLS_UC           = 0X8847;
     public static final int ETHTYPE_PBB               = 0X88E7;
 
     //Protocol Type
+    public static final int IP_PROT_ICMP = 1;
+    public static final int IP_PROT_TCP = 6;
     public static final int IP_PROT_UDP = 17;
     public static final int IP_PROT_GRE = 47;
 
index 6748e984aa2a85747c36d8dc8d70e516c5621b21..dd4f14f9f2afaf5abcf77e3559df5019a62ae72b 100644 (file)
@@ -12,7 +12,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeBase;
index a574a700d688770a5893e25e5ea35b5e42265def..2dd1c97bd2ce89db1c05478d0efe73baaac64919 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.mdsalutil.MDSALUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
@@ -32,10 +32,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hw
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes.VlanBindings;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 import com.google.common.base.Optional;
@@ -167,6 +169,30 @@ public final class HwvtepUtils {
         return null;
     }
 
+    /**
+     * Gets physical port termination point
+     *
+     * @param broker
+     *          the broker
+     * @param datastoreType
+     *          the datastore type
+     * @param nodeId
+     *          the physical switch node id
+     * @param portName
+     *          port name under physical switch node id
+     * @return the physical port termination point
+     */
+    public static TerminationPoint getPhysicalPortTerminationPoint(DataBroker broker,
+            LogicalDatastoreType datastoreType, NodeId nodeId, String portName) {
+        TerminationPointKey tpKey = new TerminationPointKey(new TpId(portName));
+        InstanceIdentifier<TerminationPoint> iid = HwvtepSouthboundUtils.createTerminationPointId(nodeId, tpKey);
+        Optional<TerminationPoint> physicalPortTerminationPoint = MDSALUtil.read(broker, datastoreType, iid);
+        if (physicalPortTerminationPoint.isPresent()) {
+            return physicalPortTerminationPoint.get();
+        }
+        return null;
+    }
+
     /**
      * Get LogicalSwitches for a given hwVtepNodeId.
      *
index 3b2477a93621db99a32c5cfaffa34ac0c7825b16..da07f16b347af49cbc0ac78af396c919318b0c29 100644 (file)
@@ -8,21 +8,24 @@
 
 package org.opendaylight.genius.resourcemanager;
 
+import java.util.concurrent.Future;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdRangeInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdRangeOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.*;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.AllocateResourceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.AllocateResourceOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetAvailableResourcesInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetAvailableResourcesOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetResourcePoolInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetResourcePoolOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceManagerService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.concurrent.Future;
-
-public class ResourceManager implements ResourceManagerService, AutoCloseable{
-
+public class ResourceManager implements ResourceManagerService, AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(ResourceManager.class);
+
     private final DataBroker broker;
     private final IdManagerService idManager;
 
@@ -59,4 +62,4 @@ public class ResourceManager implements ResourceManagerService, AutoCloseable{
         //TODO
         return null;
     }
-}
\ No newline at end of file
+}
index 2928bd040c7d9528101142f22e2304ef869b7a4c..1ee8b8778aa208c5a640c22a8b7caee22b6379ad 100644 (file)
@@ -5,7 +5,6 @@
  * 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.genius.resourcemanager;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -13,20 +12,12 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceManagerService;
-import org.opendaylight.yangtools.yang.binding.Augmentation;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.SynchronizedDataTreeModification;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import sun.rmi.runtime.Log;
-
 
-public class ResourceManagerServiceProvider implements BindingAwareProvider,
-            AutoCloseable {
+public class ResourceManagerServiceProvider implements BindingAwareProvider, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(ResourceManagerServiceProvider.class);
     private ResourceManager resourceManager;
@@ -49,22 +40,17 @@ public class ResourceManagerServiceProvider implements BindingAwareProvider,
     }
 
     @Override
-    public void onSessionInitiated(ProviderContext session){
+    public void onSessionInitiated(ProviderContext session) {
         LOG.info("ResourceManagerserviceProvider Session Initiated");
-        try {
-            dataBroker = session.getSALService(DataBroker.class);
-            idManager = rpcProviderRegistry.getRpcService(IdManagerService.class);
-            resourceManager = new ResourceManager(dataBroker, idManager);
-            rpcRegistration = getRpcProviderRegistry().addRpcImplementation(ResourceManagerService.class, resourceManager);
-            createIdpools();
-        } catch (Exception e) {
-            LOG.error("Error initializing services", e);
-        }
+        dataBroker = session.getSALService(DataBroker.class);
+        idManager = rpcProviderRegistry.getRpcService(IdManagerService.class);
+        resourceManager = new ResourceManager(dataBroker, idManager);
+        rpcRegistration = rpcProviderRegistry.addRpcImplementation(ResourceManagerService.class, resourceManager);
+        createIdpools();
     }
 
     private void createIdpools() {
-        //TODO Create pools for tables, groups and meters
-
+        // TODO Create pools for tables, groups and meters
     }
 
     public ResourceManagerServiceProvider(RpcProviderRegistry rpcRegistry) {
@@ -74,11 +60,5 @@ public class ResourceManagerServiceProvider implements BindingAwareProvider,
     @Override
     public void close() throws Exception {
         rpcRegistration.close();
-
-        }
     }
-
-
-
-
-
+}