<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <prerequisites>
- <maven>3.0</maven>
- </prerequisites>
<parent>
<groupId>org.opendaylight.controller</groupId>
<artifactId>commons.opendaylight</artifactId>
<version>1.4.2-SNAPSHOT</version>
</parent>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>commons.ovsdb</artifactId>
+ <artifactId>ovsdb_commons</artifactId>
<version>1.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <scm>
- <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <tag>HEAD</tag>
- </scm>
+ <prerequisites>
+ <maven>3.0</maven>
+ </prerequisites>
<properties>
- <nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version.source>1.7</java.version.source>
<java.version.target>1.7</java.version.target>
+ <nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
</plugins>
</pluginManagement>
</build>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
<repositories>
<!-- Opendaylight public group -->
<repository>
- <id>opendaylight-public</id>
- <name>opendaylight-public</name>
- <url>${nexusproxy}/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
+ <id>opendaylight-public</id>
+ <name>opendaylight-public</name>
+ <url>${nexusproxy}/groups/public/</url>
</repository>
<!-- OpenDayLight Released artifact -->
<repository>
<pluginRepositories>
<pluginRepository>
- <id>opendaylight-public</id>
- <name>opendaylight-public</name>
- <url>http://nexus.opendaylight.org/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
+ <id>opendaylight-public</id>
+ <name>opendaylight-public</name>
+ <url>http://nexus.opendaylight.org/content/groups/public/</url>
</pluginRepository>
<pluginRepository>
<id>opendaylight-release</id>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
Adapted from David Erickson's Distribution pom.xml
see https://git.opendaylight.org/gerrit/#/c/390/
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>commons.ovsdb</artifactId>
+ <artifactId>ovsdb_commons</artifactId>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../commons/parent/</relativePath>
</parent>
<artifactId>distribution.ovsdb</artifactId>
<packaging>pom</packaging>
<name>ovsdb Distribution</name>
-
- <scm>
- <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <tag>HEAD</tag>
- </scm>
<dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>distribution.opendaylight</artifactId>
- <version>0.1.2-SNAPSHOT</version>
- <type>zip</type>
- <classifier>osgipackage</classifier>
- <!-- Make sure this isn't included on any classpath-->
- <scope>provided</scope>
- </dependency>
<dependency>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>ovsdb</artifactId>
+ <artifactId>ovsdb_library</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>ovsdb.northbound</artifactId>
+ <artifactId>ovsdb_neutron</artifactId>
<version>0.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>ovsdb.neutron</artifactId>
+ <artifactId>ovsdb_northbound</artifactId>
<version>0.6.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_plugin</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>distribution.opendaylight</artifactId>
+ <version>0.1.2-SNAPSHOT</version>
+ <classifier>osgipackage</classifier>
+ <type>zip</type>
+ <!-- Make sure this isn't included on any classpath-->
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
<resources>
<directory>${basedir}/src/main/resources</directory>
</resource>
<resource>
- <directory>${project.build.directory}/generated-resources</directory>
<filtering>true</filtering>
+ <directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<plugins>
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>2.8</version>
+ <artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
- <id>unpack-shared-resources</id>
+ <id>distro-assembly</id>
<goals>
- <goal>unpack-dependencies</goal>
+ <goal>single</goal>
</goals>
- <phase>generate-resources</phase>
+ <phase>package</phase>
<configuration>
- <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
- <includeArtifactIds>distribution.opendaylight</includeArtifactIds>
- <includeGroupIds>org.opendaylight.controller</includeGroupIds>
- <excludeTransitive>true</excludeTransitive>
- <ignorePermissions>false</ignorePermissions>
+ <descriptors>
+ <descriptor>src/assemble/bin.xml</descriptor>
+ </descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
- <artifactId>maven-assembly-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.8</version>
<executions>
<execution>
- <id>distro-assembly</id>
- <phase>package</phase>
+ <id>unpack-shared-resources</id>
<goals>
- <goal>single</goal>
+ <goal>unpack-dependencies</goal>
</goals>
+ <phase>generate-resources</phase>
<configuration>
- <descriptors>
- <descriptor>src/assemble/bin.xml</descriptor>
- </descriptors>
+ <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
+ <includeArtifactIds>distribution.opendaylight</includeArtifactIds>
+ <includeGroupIds>org.opendaylight.controller</includeGroupIds>
+ <excludeTransitive>true</excludeTransitive>
+ <ignorePermissions>false</ignorePermissions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
+
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_commons</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <relativePath>../commons/parent</relativePath>
+ </parent>
+ <artifactId>ovsdb_library</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+
+ <properties>
+ <!-- used for filtering the integration test resource -->
+ <ovsdbserver.ipaddress>192.168.56.10</ovsdbserver.ipaddress>
+ <ovsdbserver.port>6640</ovsdbserver.port>
+ <skip.integrationtest>true</skip.integrationtest>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>${guava.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.4</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>equinoxSDK381</groupId>
+ <artifactId>org.eclipse.osgi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-all</artifactId>
+ <version>4.0.10.Final</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore-nio</artifactId>
+ <version>4.2.1</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testResources>
+ <testResource>
+ <filtering>true</filtering>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.3.6</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Import-Package>org.apache.commons.lang3.builder,
+ org.apache.commons.lang3.tuple,
+ org.apache.felix.dm,
+ org.slf4j,
+ org.eclipse.osgi.framework.console,
+ org.osgi.framework,
+ javax.net.ssl,
+ *</Import-Package>
+ <Embed-Transitive>true</Embed-Transitive>
+ <Export-Package>org.opendaylight.ovsdb.lib,
+ org.opendaylight.ovsdb.lib.table,
+ org.opendaylight.ovsdb.lib.jsonrpc,
+ org.opendaylight.ovsdb.lib.notation,
+ org.opendaylight.ovsdb.lib.database,
+ org.opendaylight.ovsdb.lib.operations,
+ org.opendaylight.ovsdb.lib.message,
+ org.opendaylight.ovsdb.lib.schema</Export-Package>
+ </instructions>
+ <manifestLocation>${project.basedir}/META-INF</manifestLocation>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <configuration>
+ <skipITs>${skip.integrationtest}</skipITs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.16</version>
+ <configuration>
+ <excludes>
+ <!-- Exclude integration tests -->
+ <exclude>**/*IT</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
+
+ <profiles>
+ <profile>
+ <id>integrationtest</id>
+ <activation></activation>
+ <properties>
+ <skip.integrationtest>false</skip.integrationtest>
+ </properties>
+ </profile>
+ </profiles>
+</project>
-/*\r
- * [[ Authors will Fill in the Copyright header ]]\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Authors : Brent Salisbury, Evan Zeller\r
- */\r
-package org.opendaylight.ovsdb.lib.database;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-\r
-public class ColumnSchema {\r
-\r
- String name;\r
-\r
- @JsonProperty("type")\r
- private OvsdbType type;\r
-\r
- @JsonProperty("ephemeral")\r
- private Boolean ephemeral;\r
-\r
- @JsonProperty("mutable")\r
- private Boolean mutable;\r
-\r
- public OvsdbType getType() {\r
- return type;\r
- }\r
-\r
- public Boolean getEphemeral() {\r
- return ephemeral;\r
- }\r
-\r
- public Boolean getMutable() {\r
- return mutable;\r
- }\r
-\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-\r
-\r
- @Override\r
- public String toString() {\r
- return "ColumnType [type=" + type + ", ephemeral=" + ephemeral\r
- + ", mutable=" + mutable + "]";\r
- }\r
-\r
-}\r
+/*
+ * [[ Authors will Fill in the Copyright header ]]
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Brent Salisbury, Evan Zeller
+ */
+package org.opendaylight.ovsdb.lib.database;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ColumnSchema {
+
+ String name;
+
+ @JsonProperty("type")
+ private OvsdbType type;
+
+ @JsonProperty("ephemeral")
+ private Boolean ephemeral;
+
+ @JsonProperty("mutable")
+ private Boolean mutable;
+
+ public OvsdbType getType() {
+ return type;
+ }
+
+ public Boolean getEphemeral() {
+ return ephemeral;
+ }
+
+ public Boolean getMutable() {
+ return mutable;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ @Override
+ public String toString() {
+ return "ColumnType [type=" + type + ", ephemeral=" + ephemeral
+ + ", mutable=" + mutable + "]";
+ }
+
+}
-/*\r
- * [[ Authors will Fill in the Copyright header ]]\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Authors : Brent Salisbury, Evan Zeller\r
- */\r
-package org.opendaylight.ovsdb.lib.database;\r
-\r
-import java.util.Map;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-\r
-public class DatabaseSchema {\r
- @JsonProperty("name")\r
- private String name;\r
-\r
- @JsonProperty("version")\r
- private String version;\r
-\r
- @JsonProperty("cksum")\r
- private String cksum;\r
-\r
- @JsonProperty("tables")\r
- private Map<String, TableSchema> tables;\r
-\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- public String getVersion() {\r
- return version;\r
- }\r
-\r
- public String getCksum() {\r
- return cksum;\r
- }\r
-\r
- public Map<String, TableSchema> getTables() {\r
- return tables;\r
- }\r
-\r
- public TableSchema getTable(String tableName) {\r
- return tables.get(tableName);\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return "DatabaseSchema [name=" + name + ", version=" + version\r
- + ", cksum=" + cksum + ", tables=" + tables + "]";\r
- }\r
-}\r
+/*
+ * [[ Authors will Fill in the Copyright header ]]
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Brent Salisbury, Evan Zeller
+ */
+package org.opendaylight.ovsdb.lib.database;
+
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class DatabaseSchema {
+ @JsonProperty("name")
+ private String name;
+
+ @JsonProperty("version")
+ private String version;
+
+ @JsonProperty("cksum")
+ private String cksum;
+
+ @JsonProperty("tables")
+ private Map<String, TableSchema> tables;
+
+ public String getName() {
+ return name;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public String getCksum() {
+ return cksum;
+ }
+
+ public Map<String, TableSchema> getTables() {
+ return tables;
+ }
+
+ public TableSchema getTable(String tableName) {
+ return tables.get(tableName);
+ }
+
+ @Override
+ public String toString() {
+ return "DatabaseSchema [name=" + name + ", version=" + version
+ + ", cksum=" + cksum + ", tables=" + tables + "]";
+ }
+}
*
* Authors : Brent Salisbury, Evan Zeller
*/
-package org.opendaylight.ovsdb.lib.database;\r
-\r
-\r
+package org.opendaylight.ovsdb.lib.database;
+
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.opendaylight.ovsdb.plugin.Connection;
-import org.opendaylight.ovsdb.plugin.OvsdbMessage;
-\r
-public class OVSBridge {\r
-\r
- private String uuid;\r
- private String name;\r
-\r
- public OVSBridge(String uuid, String name){\r
- this.uuid = uuid;\r
- this.name = name;\r
- }\r
-\r
- public String getUuid(){\r
- return this.uuid;\r
- }\r
-\r
- public String getName(){\r
- return this.name;\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public static Map<String, OVSBridge> monitorBridge(Connection connection){\r
- List<String> columns = new ArrayList<String>();\r
- columns.add("_uuid");\r
- columns.add("name");\r
-\r
- Map<String, List<String>> row = new HashMap<String, List<String>>();\r
- row.put("columns", columns);\r
-\r
- Map<String, Map> tables = new HashMap<String, Map>();\r
- tables.put("Bridge", row);\r
-\r
- Object[] params = {"Open_vSwitch", null, tables};\r
-\r
- OvsdbMessage msg = new OvsdbMessage("monitor", params);\r
- Map<String, Object> monitorResponse = new HashMap<String, Object>();\r
-\r
- Map<String, Object> bridgeTable = (Map) monitorResponse.get("Bridge");\r
-\r
- Object[] uuidObjects = bridgeTable.keySet().toArray();\r
- String[] uuids = Arrays.copyOf(uuidObjects, uuidObjects.length, String[].class);\r
-\r
- Map<String, OVSBridge> result = new HashMap<String, OVSBridge>();\r
-\r
- for(String uuid : uuids){\r
- Map<String, Object> newRow = (Map) bridgeTable.get(uuid);\r
- Map<String, Object> newColumns = (Map) newRow.get("new");\r
- String name = (String) newColumns.get("name");\r
- result.put(name, new OVSBridge(uuid, name));\r
- }\r
-\r
- return result;\r
- }\r
-}\r
+public class OVSBridge {
+
+ private String uuid;
+ private String name;
+
+ public OVSBridge(String uuid, String name){
+ this.uuid = uuid;
+ this.name = name;
+ }
+
+ public String getUuid(){
+ return this.uuid;
+ }
+
+ public String getName(){
+ return this.name;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Map<String, OVSBridge> monitorBridge(){
+ List<String> columns = new ArrayList<String>();
+ columns.add("_uuid");
+ columns.add("name");
+
+ Map<String, List<String>> row = new HashMap<String, List<String>>();
+ row.put("columns", columns);
+
+ Map<String, Map> tables = new HashMap<String, Map>();
+ tables.put("Bridge", row);
+
+ Object[] params = {"Open_vSwitch", null, tables};
+
+ Map<String, Object> monitorResponse = new HashMap<String, Object>();
+ Map<String, Object> bridgeTable = (Map) monitorResponse.get("Bridge");
+
+ Object[] uuidObjects = bridgeTable.keySet().toArray();
+ String[] uuids = Arrays.copyOf(uuidObjects, uuidObjects.length, String[].class);
+
+ Map<String, OVSBridge> result = new HashMap<String, OVSBridge>();
+
+ for(String uuid : uuids){
+ Map<String, Object> newRow = (Map) bridgeTable.get(uuid);
+ Map<String, Object> newColumns = (Map) newRow.get("new");
+ String name = (String) newColumns.get("name");
+ result.put(name, new OVSBridge(uuid, name));
+ }
+
+ return result;
+ }
+}
*
* Authors : Brent Salisbury, Evan Zeller
*/
-package org.opendaylight.ovsdb.lib.database;\r
-\r
-\r
-import org.opendaylight.ovsdb.plugin.Connection;\r
-import org.opendaylight.ovsdb.plugin.OvsdbMessage;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-public class OVSInstance {\r
- private String uuid;\r
-\r
- public OVSInstance(){\r
- this.uuid = null;\r
- }\r
-\r
- public OVSInstance(String uuid){\r
- this.uuid = uuid;\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public static OVSInstance monitorOVS(Connection connection){\r
- List<String> columns = new ArrayList<String>();\r
- columns.add("_uuid");\r
- columns.add("bridges");\r
-\r
- Map<String, List<String>> row = new HashMap<String, List<String>>();\r
- row.put("columns", columns);\r
-\r
- Map<String, Map> tables = new HashMap<String, Map>();\r
- tables.put("Open_vSwitch", row);\r
-\r
- Object[] params = {"Open_vSwitch", null, tables};\r
-\r
- OvsdbMessage msg = new OvsdbMessage("monitor", params);\r
- Map<String, Object> monitorResponse = new HashMap<String, Object>();\r
-\r
- Map<String, Object> vSwitchTable = (Map) monitorResponse.get("Open_vSwitch");\r
- if(vSwitchTable != null){\r
- String uuid = (String) vSwitchTable.keySet().toArray()[0];\r
- return new OVSInstance(uuid);\r
- }\r
- return null;\r
- }\r
-\r
- public String getUuid(){\r
- return this.uuid;\r
- }\r
-\r
-}\r
+package org.opendaylight.ovsdb.lib.database;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class OVSInstance {
+ private String uuid;
+
+ public OVSInstance(){
+ this.uuid = null;
+ }
+
+ public OVSInstance(String uuid){
+ this.uuid = uuid;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static OVSInstance monitorOVS(){
+ List<String> columns = new ArrayList<String>();
+ columns.add("_uuid");
+ columns.add("bridges");
+
+ Map<String, List<String>> row = new HashMap<String, List<String>>();
+ row.put("columns", columns);
+
+ Map<String, Map> tables = new HashMap<String, Map>();
+ tables.put("Open_vSwitch", row);
+
+ Object[] params = {"Open_vSwitch", null, tables};
+
+ Map<String, Object> monitorResponse = new HashMap<String, Object>();
+
+ Map<String, Object> vSwitchTable = (Map) monitorResponse.get("Open_vSwitch");
+ if(vSwitchTable != null){
+ String uuid = (String) vSwitchTable.keySet().toArray()[0];
+ return new OVSInstance(uuid);
+ }
+ return null;
+ }
+
+ public String getUuid(){
+ return this.uuid;
+ }
+
+}
*
* Authors : Brent Salisbury, Evan Zeller
*/
-package org.opendaylight.ovsdb.lib.database;\r
-\r
+package org.opendaylight.ovsdb.lib.database;
+
import com.fasterxml.jackson.annotation.JsonProperty;
-\r
-\r
-public class OvsdbType {\r
- public enum PortType {\r
- VLAN("vlan"),\r
- TUNNEL("Tunnel"),\r
- BONDING("Bonding"),\r
- PATCH("patch"),\r
- INTERNAL("internal");\r
-\r
- private PortType(String name) {\r
- this.name = name;\r
- }\r
-\r
- private String name;\r
-\r
+
+
+public class OvsdbType {
+ public enum PortType {
+ VLAN("vlan"),
+ TUNNEL("Tunnel"),
+ BONDING("Bonding"),
+ PATCH("patch"),
+ INTERNAL("internal");
+
+ private PortType(String name) {
+ this.name = name;
+ }
+
+ private String name;
+
@Override
- public String toString() {\r
- return name;\r
- }\r
- }\r
- public OvsdbType(String type){\r
- this.key = new BaseType(type);\r
- }\r
-\r
- public OvsdbType(@JsonProperty("key") BaseType key, @JsonProperty("value") BaseType value,\r
- @JsonProperty("min") Integer min, @JsonProperty("max") Object max){\r
- this.key = key;\r
- this.value = value;\r
- this.min = min;\r
- this.max = max;\r
- }\r
-\r
- public BaseType key;\r
- public BaseType value;\r
- public Integer min;\r
- public Object max;\r
-\r
- public static class BaseType{\r
-\r
- public BaseType(String type){\r
- this.type = type;\r
- }\r
-\r
- public BaseType(@JsonProperty("type") String type, @JsonProperty("enum") Object ovsdbEnum,\r
- @JsonProperty("minInteger") Integer minInteger, @JsonProperty("maxInteger") Integer maxInteger,\r
- @JsonProperty("minReal") Double minReal, @JsonProperty("maxReal") Double maxReal,\r
- @JsonProperty("minLength") Integer minLength, @JsonProperty("maxLength") Integer maxLength,\r
- @JsonProperty("refTable") String refTable, @JsonProperty("refType") String refType){\r
- this.type = type;\r
- this.ovsdbEnum = ovsdbEnum;\r
- this.minInteger = minInteger;\r
- this.maxInteger = maxInteger;\r
- this.minReal = minReal;\r
- this.maxReal = maxReal;\r
- this.minLength = minLength;\r
- this.maxLength = maxLength;\r
- this.refTable = refTable;\r
- this.refType = refType;\r
- }\r
-\r
- public String type;\r
- public Object ovsdbEnum;\r
- public Integer minInteger;\r
- public Integer maxInteger;\r
- public Double minReal;\r
- public Double maxReal;\r
- public Integer minLength;\r
- public Integer maxLength;\r
- public String refTable;\r
- public String refType;\r
- @Override\r
- public String toString() {\r
- return "BaseType [type=" + type + ", ovsdbEnum="\r
- + ovsdbEnum + ", minInteger=" + minInteger\r
- + ", maxInteger=" + maxInteger + ", minReal=" + minReal\r
- + ", maxReal=" + maxReal + ", minLength=" + minLength\r
- + ", maxLength=" + maxLength + ", refTable=" + refTable\r
- + ", refType=" + refType + "]";\r
- }\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return "OvsdbType [key=" + key + ", value=" + value + ", min=" + min\r
- + ", max=" + max + "]";\r
- }\r
-}\r
+ public String toString() {
+ return name;
+ }
+ }
+ public OvsdbType(String type){
+ this.key = new BaseType(type);
+ }
+
+ public OvsdbType(@JsonProperty("key") BaseType key, @JsonProperty("value") BaseType value,
+ @JsonProperty("min") Integer min, @JsonProperty("max") Object max){
+ this.key = key;
+ this.value = value;
+ this.min = min;
+ this.max = max;
+ }
+
+ public BaseType key;
+ public BaseType value;
+ public Integer min;
+ public Object max;
+
+ public static class BaseType{
+
+ public BaseType(String type){
+ this.type = type;
+ }
+
+ public BaseType(@JsonProperty("type") String type, @JsonProperty("enum") Object ovsdbEnum,
+ @JsonProperty("minInteger") Integer minInteger, @JsonProperty("maxInteger") Integer maxInteger,
+ @JsonProperty("minReal") Double minReal, @JsonProperty("maxReal") Double maxReal,
+ @JsonProperty("minLength") Integer minLength, @JsonProperty("maxLength") Integer maxLength,
+ @JsonProperty("refTable") String refTable, @JsonProperty("refType") String refType){
+ this.type = type;
+ this.ovsdbEnum = ovsdbEnum;
+ this.minInteger = minInteger;
+ this.maxInteger = maxInteger;
+ this.minReal = minReal;
+ this.maxReal = maxReal;
+ this.minLength = minLength;
+ this.maxLength = maxLength;
+ this.refTable = refTable;
+ this.refType = refType;
+ }
+
+ public String type;
+ public Object ovsdbEnum;
+ public Integer minInteger;
+ public Integer maxInteger;
+ public Double minReal;
+ public Double maxReal;
+ public Integer minLength;
+ public Integer maxLength;
+ public String refTable;
+ public String refType;
+ @Override
+ public String toString() {
+ return "BaseType [type=" + type + ", ovsdbEnum="
+ + ovsdbEnum + ", minInteger=" + minInteger
+ + ", maxInteger=" + maxInteger + ", minReal=" + minReal
+ + ", maxReal=" + maxReal + ", minLength=" + minLength
+ + ", maxLength=" + maxLength + ", refTable=" + refTable
+ + ", refType=" + refType + "]";
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "OvsdbType [key=" + key + ", value=" + value + ", min=" + min
+ + ", max=" + max + "]";
+ }
+}
-/*\r
- * [[ Authors will Fill in the Copyright header ]]\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Authors : Brent Salisbury, Evan Zeller\r
- */\r
-package org.opendaylight.ovsdb.lib.database;\r
-\r
-import java.util.Map;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-\r
-public class TableSchema {\r
-\r
- @JsonProperty("columns")\r
- private Map<String, ColumnSchema> columns;\r
-\r
- @JsonProperty("maxRows")\r
- private Integer maxRows;\r
-\r
- @JsonProperty("isRoot")\r
- private Boolean isRoot;\r
-\r
- @JsonProperty("indexes")\r
- private Object indexes;\r
-\r
- public Map<String, ColumnSchema> getColumns() {\r
- return this.columns;\r
- }\r
-\r
- public ColumnSchema getColumn(String columnName) {\r
- return this.columns.get(columnName);\r
- }\r
-\r
- public Integer getMaxRows() {\r
- return maxRows;\r
- }\r
-\r
- public Boolean getIsRoot() {\r
- return isRoot;\r
- }\r
-\r
- public Object getIndexes() {\r
- return indexes;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return "TableSchema [columns=" + columns + ", maxRows=" + maxRows\r
- + ", isRoot=" + isRoot + ", indexes=" + indexes + "]";\r
- }\r
-}\r
+/*
+ * [[ Authors will Fill in the Copyright header ]]
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Brent Salisbury, Evan Zeller
+ */
+package org.opendaylight.ovsdb.lib.database;
+
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class TableSchema {
+
+ @JsonProperty("columns")
+ private Map<String, ColumnSchema> columns;
+
+ @JsonProperty("maxRows")
+ private Integer maxRows;
+
+ @JsonProperty("isRoot")
+ private Boolean isRoot;
+
+ @JsonProperty("indexes")
+ private Object indexes;
+
+ public Map<String, ColumnSchema> getColumns() {
+ return this.columns;
+ }
+
+ public ColumnSchema getColumn(String columnName) {
+ return this.columns.get(columnName);
+ }
+
+ public Integer getMaxRows() {
+ return maxRows;
+ }
+
+ public Boolean getIsRoot() {
+ return isRoot;
+ }
+
+ public Object getIndexes() {
+ return indexes;
+ }
+
+ @Override
+ public String toString() {
+ return "TableSchema [columns=" + columns + ", maxRows=" + maxRows
+ + ", isRoot=" + isRoot + ", indexes=" + indexes + "]";
+ }
+}
*
* Authors : Brent Salisbury, Evan Zeller
*/
-package org.opendaylight.ovsdb.lib.database;\r
-\r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
-\r
-public class Uuid {\r
- @JsonProperty("uuid")\r
- public String[] uuid;\r
-}\r
+package org.opendaylight.ovsdb.lib.database;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class Uuid {
+ @JsonProperty("uuid")
+ public String[] uuid;
+}
import java.util.Map;
import java.util.UUID;
-import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
ObjectMapper objectMapper;
Channel nettyChannel;
Map<String, CallContext> methodContext = Maps.newHashMap();
- Map<Node, OvsdbRPC.Callback> requestCallbacks = Maps.newHashMap();
+ Map<Object, OvsdbRPC.Callback> requestCallbacks = Maps.newHashMap();
public JsonRpcEndpoint(ObjectMapper objectMapper, Channel channel) {
this.objectMapper = objectMapper;
this.nettyChannel = channel;
}
- public <T> T getClient(final Node node, Class<T> klazz) {
+ public <T> T getClient(final Object context, Class<T> klazz) {
return Reflection.newProxy(klazz, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (method.getName().equals(OvsdbRPC.REGISTER_CALLBACK_METHOD)) {
if ((args == null) || args.length != 1 || !(args[0] instanceof OvsdbRPC.Callback)) return false;
- requestCallbacks.put(node, (OvsdbRPC.Callback)args[0]);
+ requestCallbacks.put(context, (OvsdbRPC.Callback)args[0]);
return true;
}
}
}
- public void processRequest(Node node, JsonNode requestJson) {
+ public void processRequest(Object context, JsonNode requestJson) {
JsonRpc10Request request = new JsonRpc10Request(requestJson.get("id").asText());
request.setMethod(requestJson.get("method").asText());
logger.trace("Request : {} {}", requestJson.get("method"), requestJson.get("params"));
- OvsdbRPC.Callback callback = requestCallbacks.get(node);
+ OvsdbRPC.Callback callback = requestCallbacks.get(context);
if (callback != null) {
Method[] methods = callback.getClass().getDeclaredMethods();
for (Method m : methods) {
JsonNode params = requestJson.get("params");
Object param = objectMapper.convertValue(params, parameters[1]);
try {
- m.invoke(callback, node, param);
+ m.invoke(callback, context, param);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error("Unable to invoke callback " + m.getName(), e);
}
return;
}
- logger.error("No handler for Request : {} on {}",requestJson.toString(), node);
+ logger.error("No handler for Request : {} on {}",requestJson.toString(), context);
}
public Map<String, CallContext> getMethodContext() {
*
* Authors : Ashwin Raveendran, Madhu Venugopal
*/
-package org.opendaylight.ovsdb.lib.jsonrpc;\r
-\r
-import com.fasterxml.jackson.databind.JsonNode;\r
-import com.google.common.base.Strings;\r
-import com.google.common.collect.Maps;\r
-import com.google.common.util.concurrent.SettableFuture;\r
-\r
-import io.netty.channel.ChannelHandlerContext;\r
-import io.netty.channel.ChannelInboundHandlerAdapter;\r
-\r
-import org.opendaylight.controller.sal.core.Node;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import java.util.Map;\r
-\r
-public class JsonRpcServiceBinderHandler extends ChannelInboundHandlerAdapter {\r
- protected static final Logger logger = LoggerFactory.getLogger(JsonRpcServiceBinderHandler.class);\r
- Map<Object, SettableFuture<Object>> waitingForReply = Maps.newHashMap();\r
- JsonRpcEndpoint factory = null;\r
- Node node = null;\r
-\r
- public Node getNode() {\r
- return node;\r
- }\r
-\r
- public void setNode(Node node) {\r
- this.node = node;\r
- }\r
-\r
- public JsonRpcServiceBinderHandler(JsonRpcEndpoint factory) {\r
- this.factory = factory;\r
- }\r
-\r
- @Override\r
- public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {\r
-\r
- if (msg instanceof JsonNode) {\r
- JsonNode jsonNode = (JsonNode) msg;\r
-\r
- if (jsonNode.has("result")) {\r
- factory.processResult(jsonNode);\r
- } else if (jsonNode.hasNonNull("method")) {\r
- if (jsonNode.has("id") && !Strings.isNullOrEmpty(jsonNode.get("id").asText())) {\r
- factory.processRequest(node, jsonNode);\r
- }\r
- }\r
-\r
- return;\r
- }\r
-\r
- ctx.channel().close();\r
- }\r
-\r
- @Override\r
- public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {\r
- ctx.flush();\r
- }\r
+package org.opendaylight.ovsdb.lib.jsonrpc;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.base.Strings;
+import com.google.common.collect.Maps;
+import com.google.common.util.concurrent.SettableFuture;
+
+public class JsonRpcServiceBinderHandler extends ChannelInboundHandlerAdapter {
+ protected static final Logger logger = LoggerFactory.getLogger(JsonRpcServiceBinderHandler.class);
+ Map<Object, SettableFuture<Object>> waitingForReply = Maps.newHashMap();
+ JsonRpcEndpoint factory = null;
+ Object context = null;
+
+ public Object getContext() {
+ return context;
+ }
+
+ public void setContext(Object context) {
+ this.context = context;
+ }
+
+ public JsonRpcServiceBinderHandler(JsonRpcEndpoint factory) {
+ this.factory = factory;
+ }
+
+ @Override
+ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
+
+ if (msg instanceof JsonNode) {
+ JsonNode jsonNode = (JsonNode) msg;
+
+ if (jsonNode.has("result")) {
+ factory.processResult(jsonNode);
+ } else if (jsonNode.hasNonNull("method")) {
+ if (jsonNode.has("id") && !Strings.isNullOrEmpty(jsonNode.get("id").asText())) {
+ factory.processRequest(context, jsonNode);
+ }
+ }
+
+ return;
+ }
+
+ ctx.channel().close();
+ }
+
+ @Override
+ public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
+ ctx.flush();
+ }
}
import java.util.List;
-import org.opendaylight.ovsdb.lib.table.internal.Column;
+import org.opendaylight.ovsdb.lib.table.Column;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MonitorRequest<E> {
import com.google.common.collect.Maps;
import org.opendaylight.ovsdb.lib.jsonrpc.Params;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import java.util.List;
import java.util.Map;
import java.util.List;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.util.concurrent.ListenableFuture;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.ovsdb.lib.operations.OperationResult;
-
public interface OvsdbRPC {
public static final String REGISTER_CALLBACK_METHOD = "registerCallback";
public static interface Callback {
- public void update(Node node, UpdateNotification upadateNotification);
- public void locked(Node node, List<String> ids);
- public void stolen(Node node, List<String> ids);
+ public void update(Object context, UpdateNotification upadateNotification);
+ public void locked(Object context, List<String> ids);
+ public void stolen(Object context, List<String> ids);
// ECHO is handled by JsonRPCEndpoint directly.
// We can add Echo request here if there is a need for clients to handle it.
}
import java.util.Collection;
import java.util.Map;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public class TableUpdate<T extends Table> {
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Maps;
+
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Capability;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Flow_Sample_Collector_Set;
import org.opendaylight.ovsdb.lib.table.Flow_Table;
import org.opendaylight.ovsdb.lib.table.IPFIX;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import java.util.Map;
import java.util.Set;
*/
package org.opendaylight.ovsdb.lib.operations;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import com.fasterxml.jackson.annotation.JsonProperty;
// TODO Madhu : This is not complete. Getting it in to enable other committers to make progress
import java.util.List;
import org.opendaylight.ovsdb.lib.notation.Condition;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
//TODO Madhu : This is not complete. Getting it in to enable other committers to make progress
public class UpdateOperation extends Operation {
String table;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class Bridge extends Table<Bridge> {
public static final Name<Bridge> NAME = new Name<Bridge>("Bridge"){};
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Bridge>{controller, fail_mode, name, ports}
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Bridge>{controller, fail_mode, name, ports}
private String name;
private OvsDBSet<UUID> ports;
package org.opendaylight.ovsdb.lib.table;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
*
* Authors : Ashwin Raveendran
*/
-package org.opendaylight.ovsdb.lib.table.internal;
+package org.opendaylight.ovsdb.lib.table;
public interface Column<E> {
*/
package org.opendaylight.ovsdb.lib.table;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
-
import com.fasterxml.jackson.annotation.JsonIgnore;
public class Controller extends Table<Controller> {
package org.opendaylight.ovsdb.lib.table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
/**
* Per ovs-vswitchd.conf.db 2.0.90
"]";
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Flow_Sample_Collector_Set> {
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Flow_Sample_Collector_Set> {
id,
bridge,
external_ids,
package org.opendaylight.ovsdb.lib.table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
/**
* Per ovs-vswitchd.conf.db 2.0.90
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Flow_Table> {
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Flow_Table> {
name,
flow_limit,
overflow_policy,
package org.opendaylight.ovsdb.lib.table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
/**
* Per ovs-vswitchd.conf.db 2.0.90
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
*/
package org.opendaylight.ovsdb.lib.table;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
-
import com.fasterxml.jackson.annotation.JsonIgnore;
public class Manager extends Table<Manager> {
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
package org.opendaylight.ovsdb.lib.table;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+ external_ids + ", statistics=" + statistics + "]";
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Open_vSwitch>{ controller, fail_mode, name, ports}
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Open_vSwitch>{ controller, fail_mode, name, ports}
}
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+ external_ids + "]";
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Port> {
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Port> {
interfaces,
name,
tag,
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+ other_config + ", external_ids=" + external_ids + "]";
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Qos> {
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Qos> {
queues,
type,
other_config,
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+ ", external_ids=" + external_ids + "]";
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<Queue> {
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<Queue> {
dscp,
other_config,
external_ids}
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
package org.opendaylight.ovsdb.lib.table;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
+ external_ids + "]";
}
- public enum Column implements org.opendaylight.ovsdb.lib.table.internal.Column<SSL> {
+ public enum Column implements org.opendaylight.ovsdb.lib.table.Column<SSL> {
ca_cert,
bootstrap_ca_cert,
certificate,
*
* Authors : Ashwin Raveendran
*/
-package org.opendaylight.ovsdb.lib.table.internal;
+package org.opendaylight.ovsdb.lib.table;
public abstract class Table<E extends Table> {
public abstract Name<E> getTableName();
*
* Authors : Ashwin Raveendran
*/
-package org.opendaylight.ovsdb.lib.table.internal;
-
-import org.opendaylight.ovsdb.lib.table.Bridge;
-import org.opendaylight.ovsdb.lib.table.Capability;
-import org.opendaylight.ovsdb.lib.table.Interface;
-import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.Controller;
-import org.opendaylight.ovsdb.lib.table.Manager;
-import org.opendaylight.ovsdb.lib.table.Mirror;
-import org.opendaylight.ovsdb.lib.table.NetFlow;
-import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
-import org.opendaylight.ovsdb.lib.table.Qos;
-import org.opendaylight.ovsdb.lib.table.Queue;
-import org.opendaylight.ovsdb.lib.table.SFlow;
-import org.opendaylight.ovsdb.lib.table.SSL;
-import org.opendaylight.ovsdb.lib.table.Flow_Sample_Collector_Set;
-import org.opendaylight.ovsdb.lib.table.Flow_Table;
-import org.opendaylight.ovsdb.lib.table.IPFIX;
+package org.opendaylight.ovsdb.lib.table;
import java.util.ArrayList;
import java.util.List;
*/
package org.opendaylight.ovsdb.lib;
-import com.google.common.util.concurrent.ListenableFuture;
+import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
import junit.framework.Assert;
+
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+import org.opendaylight.ovsdb.lib.message.UpdateNotification;
import org.opendaylight.ovsdb.lib.operations.OperationResult;
import org.opendaylight.ovsdb.lib.schema.ATableSchema;
import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.TableSchema;
-import org.opendaylight.ovsdb.plugin.OvsdbTestBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+import com.google.common.util.concurrent.ListenableFuture;
public class OvsDBClientTestIT extends OvsdbTestBase {
if (ovs != null) {
return;
}
- TestObjects testConnection = getTestConnection();
- OvsdbRPC rpc = testConnection.connectionService.getConnection(testConnection.node).getRpc();
-
+ OvsdbRPC rpc = getTestConnection();
+ if (rpc == null) {
+ System.out.println("Unable to Establish Test Connection");
+ }
ExecutorService executorService = Executors.newFixedThreadPool(3);
ovs = new OvsDBClientImpl(rpc, executorService);
}
+
+ @Override
+ public void update(Object node, UpdateNotification upadateNotification) {
+ // TODO Auto-generated method stub
+
+ }
+ @Override
+ public void locked(Object node, List<String> ids) {
+ // TODO Auto-generated method stub
+
+ }
+ @Override
+ public void stolen(Object node, List<String> ids) {
+ // TODO Auto-generated method stub
+
+ }
}
*/
package org.opendaylight.ovsdb.lib;
-import com.google.common.util.concurrent.ListenableFuture;
+import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
import junit.framework.Assert;
+
import org.junit.Test;
import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+import org.opendaylight.ovsdb.lib.message.UpdateNotification;
import org.opendaylight.ovsdb.lib.operations.OperationResult;
import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
import org.opendaylight.ovsdb.lib.schema.TableSchema;
import org.opendaylight.ovsdb.lib.schema.temp.Reference;
-import org.opendaylight.ovsdb.plugin.OvsdbTestBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+import com.google.common.util.concurrent.ListenableFuture;
public class OvsDBClientTestITTyped extends OvsdbTestBase {
System.out.println("operationResults = " + operationResults);
}
-
-
-
private OvsDBClientImpl getVswitch() throws IOException, InterruptedException {
- TestObjects testConnection = getTestConnection();
- OvsdbRPC rpc = testConnection.connectionService.getConnection(testConnection.node).getRpc();
+ OvsdbRPC rpc = getTestConnection();
+ if (rpc == null) {
+ System.out.println("Unable to Establish Test Connection");
+ }
ExecutorService executorService = Executors.newFixedThreadPool(3);
OvsDBClientImpl ovs = new OvsDBClientImpl(rpc, executorService);
return ovs;
}
+
+ @Override
+ public void update(Object node, UpdateNotification upadateNotification) {
+ // TODO Auto-generated method stub
+
+ }
+ @Override
+ public void locked(Object node, List<String> ids) {
+ // TODO Auto-generated method stub
+
+ }
+ @Override
+ public void stolen(Object node, List<String> ids) {
+ // TODO Auto-generated method stub
+
+ }
+
}
--- /dev/null
+/*
+ * [[ Authors will Fill in the Copyright header ]]
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Brent Salisbury, Hugo Trippaers
+ */
+package org.opendaylight.ovsdb.lib;
+
+import io.netty.bootstrap.Bootstrap;
+import io.netty.channel.AdaptiveRecvByteBufAllocator;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.ChannelOption;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioSocketChannel;
+import io.netty.handler.codec.string.StringEncoder;
+import io.netty.util.CharsetUtil;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.util.Properties;
+import java.util.concurrent.ExecutionException;
+
+import org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcDecoder;
+import org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcEndpoint;
+import org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcServiceBinderHandler;
+import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public abstract class OvsdbTestBase implements OvsdbRPC.Callback{
+ private final static String identifier = "TEST";
+
+ public Properties loadProperties() throws IOException {
+ InputStream is = this
+ .getClass()
+ .getClassLoader()
+ .getResourceAsStream(
+ "org/opendaylight/ovsdb/lib/message/integration-test.properties");
+ if (is == null) {
+ throw new IOException("Unable to load integration-test.properties");
+ }
+ Properties props = new Properties();
+ props.load(is);
+
+ return props;
+ }
+
+ private Channel connect(String addressStr, String portStr) {
+ InetAddress address;
+ try {
+ address = InetAddress.getByName(addressStr);
+ } catch (Exception e) {
+ System.out.println("Unable to resolve " + addressStr);
+ e.printStackTrace();
+ return null;
+ }
+
+ Integer port;
+ try {
+ port = Integer.parseInt(portStr);
+ } catch (NumberFormatException e) {
+ System.out.println("Invalid port number : " + portStr);
+ e.printStackTrace();
+ return null;
+ }
+
+ try {
+ Bootstrap bootstrap = new Bootstrap();
+ bootstrap.group(new NioEventLoopGroup());
+ bootstrap.channel(NioSocketChannel.class);
+ bootstrap.option(ChannelOption.TCP_NODELAY, true);
+ bootstrap.option(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator(65535, 65535, 65535));
+
+ bootstrap.handler(new ChannelInitializer<SocketChannel>() {
+ @Override
+ public void initChannel(SocketChannel channel) throws Exception {
+ channel.pipeline().addLast(
+ //new LoggingHandler(LogLevel.INFO),
+ new JsonRpcDecoder(100000),
+ new StringEncoder(CharsetUtil.UTF_8));
+ }
+ });
+
+ ChannelFuture future = bootstrap.connect(address, port).sync();
+ Channel channel = future.channel();
+ return channel;
+ } catch (InterruptedException e) {
+ System.out.println("Thread was interrupted during connect");
+ }
+ return null;
+ }
+
+ public OvsdbRPC getTestConnection() throws IOException {
+ Properties props = loadProperties();
+ String address = props.getProperty("ovsdbserver.ipaddress");
+ String port = props.getProperty("ovsdbserver.port", "6640");
+
+ Channel channel = this.connect(address, port);
+ if (channel == null) {
+ throw new IOException("Failed to connecto to ovsdb server");
+ }
+ try {
+ return this.handleNewConnection(channel);
+ } catch (InterruptedException | ExecutionException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private OvsdbRPC handleNewConnection(Channel channel) throws InterruptedException, ExecutionException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ objectMapper.setSerializationInclusion(Include.NON_NULL);
+
+ JsonRpcEndpoint factory = new JsonRpcEndpoint(objectMapper, channel);
+ JsonRpcServiceBinderHandler binderHandler = new JsonRpcServiceBinderHandler(factory);
+ binderHandler.setContext(channel);
+ channel.pipeline().addLast(binderHandler);
+
+ OvsdbRPC ovsdb = factory.getClient(channel, OvsdbRPC.class);
+ ovsdb.registerCallback(this);
+ return ovsdb;
+ }
+}
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import java.io.IOException;
import java.io.InputStream;
--- /dev/null
+ovsdbserver.ipaddress=192.168.56.104
+ovsdbserver.port=6644
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>commons.ovsdb</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- <relativePath>../commons/parent</relativePath>
- </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_commons</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <relativePath>../commons/parent</relativePath>
+ </parent>
- <artifactId>ovsdb.neutron</artifactId>
- <version>0.6.0-SNAPSHOT</version>
- <packaging>bundle</packaging>
+ <artifactId>ovsdb_neutron</artifactId>
+ <version>0.6.0-SNAPSHOT</version>
+ <packaging>bundle</packaging>
- <scm>
- <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <tag>HEAD</tag>
- </scm>
-
- <properties>
- <guava.version>14.0.1</guava.version>
- <xtend.version>2.4.3</xtend.version>
- <bundle.plugin.version>2.4.0</bundle.plugin.version>
- <maven.clean.plugin.version>2.5</maven.clean.plugin.version>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>2.3.6</version>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Import-Package>
- org.opendaylight.controller.networkconfig.neutron,
- org.opendaylight.controller.containermanager,
- org.opendaylight.controller.switchmanager,
- org.opendaylight.controller.forwardingrulesmanager,
- org.opendaylight.controller.sal.core,
- org.opendaylight.controller.sal.utils,
- org.opendaylight.controller.sal.action,
- org.opendaylight.ovsdb.plugin,
- org.opendaylight.ovsdb.lib.notation,
- org.opendaylight.ovsdb.lib.table,
- org.opendaylight.ovsdb.lib.table.internal,
- org.opendaylight.controller.sal.binding.api,
- org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819,
- org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes,
- org.opendaylight.yangtools.yang.binding,
- org.apache.felix.dm,
- org.slf4j,
- org.osgi.framework,
- *
- </Import-Package>
- <Bundle-Activator>
- org.opendaylight.ovsdb.neutron.Activator
- </Bundle-Activator>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <properties>
+ <bundle.plugin.version>2.4.0</bundle.plugin.version>
+ <guava.version>14.0.1</guava.version>
+ <maven.clean.plugin.version>2.5</maven.clean.plugin.version>
+ <xtend.version>2.4.3</xtend.version>
+ </properties>
<dependencies>
<dependency>
<groupId>org.opendaylight.controller</groupId>
- <version>0.4.2-SNAPSHOT</version>
- <artifactId>networkconfig.neutron</artifactId>
+ <artifactId>containermanager</artifactId>
+ <version>0.5.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
- <artifactId>switchmanager</artifactId>
- <version>0.7.1-SNAPSHOT</version>
+ <artifactId>forwardingrulesmanager</artifactId>
+ <version>0.5.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
- <artifactId>forwardingrulesmanager</artifactId>
- <version>0.5.1-SNAPSHOT</version>
+ <artifactId>networkconfig.neutron</artifactId>
+ <version>0.4.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>sal</artifactId>
<version>0.7.1-SNAPSHOT</version>
</dependency>
- <dependency>
- <groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>ovsdb</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- </dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
- <artifactId>containermanager</artifactId>
- <version>0.5.2-SNAPSHOT</version>
+ <artifactId>sal-binding-api</artifactId>
+ <version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-binding-api</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal-common-util</artifactId>
+ <version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller.model</groupId>
- <artifactId>model-flow-service</artifactId>
- <version>1.1-SNAPSHOT</version>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>switchmanager</artifactId>
+ <version>0.7.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller.model</groupId>
<artifactId>model-flow-base</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.opendaylight.controller.model</groupId>
<artifactId>model-flow-management</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller.model</groupId>
+ <artifactId>model-flow-service</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.controller.model</groupId>
<artifactId>model-inventory</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_library</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_plugin</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
<version>0.6.2-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-common-util</artifactId>
- <version>1.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>1.9.5</version>
- <scope>test</scope>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.9.5</version>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-module-junit4</artifactId>
- <version>1.5.2</version>
- <scope>test</scope>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ <version>1.5.2</version>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-api-mockito</artifactId>
- <version>1.5.2</version>
- <scope>test</scope>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4</artifactId>
+ <version>1.5.2</version>
+ <scope>test</scope>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.3.6</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Import-Package>org.opendaylight.controller.networkconfig.neutron,
+ org.opendaylight.controller.containermanager,
+ org.opendaylight.controller.switchmanager,
+ org.opendaylight.controller.forwardingrulesmanager,
+ org.opendaylight.controller.sal.core,
+ org.opendaylight.controller.sal.utils,
+ org.opendaylight.controller.sal.action,
+ org.opendaylight.ovsdb.plugin,
+ org.opendaylight.ovsdb.lib.notation,
+ org.opendaylight.ovsdb.lib.table,
+ org.opendaylight.controller.sal.binding.api,
+ org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819,
+ org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes,
+ org.opendaylight.yangtools.yang.binding,
+ org.apache.felix.dm,
+ org.slf4j,
+ org.osgi.framework,
+ *</Import-Package>
+ <Bundle-Activator>org.opendaylight.ovsdb.neutron.Activator</Bundle-Activator>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
</project>
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.utils.ServiceHelper;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.neutron.provider.ProviderNetworkManager;
import org.opendaylight.ovsdb.plugin.IConnectionServiceInternal;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package org.opendaylight.ovsdb.neutron;
import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public class SouthboundEvent {
public enum Type { NODE, ROW };
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.neutron.provider.ProviderNetworkManager;
import org.opendaylight.ovsdb.plugin.OVSDBInventoryListener;
import org.slf4j.Logger;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.neutron.provider.ProviderNetworkManager;
import org.opendaylight.ovsdb.plugin.IConnectionServiceInternal;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.neutron.AdminConfigManager;
import org.opendaylight.ovsdb.neutron.InternalNetworkManager;
import org.opendaylight.ovsdb.neutron.TenantNetworkManager;
String bridgeUUID = null;
String tunnelBridgeName = AdminConfigManager.getManager().getIntegrationBridgeName();
OVSDBConfigService ovsdbTable = (OVSDBConfigService)ServiceHelper.getGlobalInstance(OVSDBConfigService.class, this);
- Map<String, org.opendaylight.ovsdb.lib.table.internal.Table<?>> bridgeTable = ovsdbTable.getRows(node, Bridge.NAME.getName());
+ Map<String, org.opendaylight.ovsdb.lib.table.Table<?>> bridgeTable = ovsdbTable.getRows(node, Bridge.NAME.getName());
if (bridgeTable != null) {
for (String uuid : bridgeTable.keySet()) {
Bridge bridge = (Bridge)bridgeTable.get(uuid);
return;
}
- Map<String, org.opendaylight.ovsdb.lib.table.internal.Table<?>> intfs = ovsdbTable.getRows(node, Interface.NAME.getName());
+ Map<String, org.opendaylight.ovsdb.lib.table.Table<?>> intfs = ovsdbTable.getRows(node, Interface.NAME.getName());
if (intfs != null) {
- for (org.opendaylight.ovsdb.lib.table.internal.Table<?> row : intfs.values()) {
+ for (org.opendaylight.ovsdb.lib.table.Table<?> row : intfs.values()) {
Interface tunIntf = (Interface)row;
if (tunIntf.getName().equals(this.getTunnelName(tunnelType, dst))) {
of_ports = tunIntf.getOfport();
private Status triggerInterfaceUpdates(Node node) {
try {
OVSDBConfigService ovsdbTable = (OVSDBConfigService)ServiceHelper.getGlobalInstance(OVSDBConfigService.class, this);
- Map<String, org.opendaylight.ovsdb.lib.table.internal.Table<?>> intfs = ovsdbTable.getRows(node, Interface.NAME.getName());
+ Map<String, org.opendaylight.ovsdb.lib.table.Table<?>> intfs = ovsdbTable.getRows(node, Interface.NAME.getName());
if (intfs != null) {
- for (org.opendaylight.ovsdb.lib.table.internal.Table<?> row : intfs.values()) {
+ for (org.opendaylight.ovsdb.lib.table.Table<?> row : intfs.values()) {
Interface intf = (Interface)row;
NeutronNetwork network = TenantNetworkManager.getManager().getTenantNetworkForInterface(intf);
logger.debug("Trigger Interface update for {}", intf);
import org.opendaylight.controller.sal.utils.Status;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Interface;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.controller.sal.utils.ServiceHelper;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.ovsdb.plugin.ConfigurationService;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.powermock.api.mockito.PowerMockito;
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>commons.ovsdb</artifactId>
+ <artifactId>ovsdb_commons</artifactId>
<version>1.1.0-SNAPSHOT</version>
- <relativePath>../../commons/parent</relativePath>
+ <relativePath>../commons/parent</relativePath>
</parent>
- <scm>
- <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <tag>HEAD</tag>
- </scm>
- <artifactId>ovsdb.northbound</artifactId>
+ <artifactId>ovsdb_northbound</artifactId>
<version>0.6.0-SNAPSHOT</version>
<packaging>bundle</packaging>
+ <dependencies>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.enunciate</groupId>
+ <artifactId>enunciate-core-annotations</artifactId>
+ <version>${enunciate.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>commons.northbound</artifactId>
+ <version>0.4.2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal</artifactId>
+ <version>0.7.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_library</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_plugin</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+
+ </dependencies>
<build>
<plugins>
- <plugin>
- <groupId>org.codehaus.enunciate</groupId>
- <artifactId>maven-enunciate-plugin</artifactId>
- <version>${enunciate.version}</version>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
- <Export-Package>
- </Export-Package>
- <Import-Package>
- org.opendaylight.controller.sal.utils,
+ <Export-Package></Export-Package>
+ <Import-Package>org.opendaylight.controller.sal.utils,
org.opendaylight.controller.northbound.commons,
org.opendaylight.controller.northbound.commons.exception,
org.opendaylight.controller.northbound.commons.utils,
org.opendaylight.controller.sal.core,
org.opendaylight.controller.sal.authorization,
org.opendaylight.ovsdb.lib.table,
- org.opendaylight.ovsdb.lib.table.internal,
org.opendaylight.ovsdb.lib.notation,
org.opendaylight.ovsdb.plugin,
javax.ws.rs,
org.apache.catalina.filters,
com.fasterxml.jackson.databind.annotation,
com.fasterxml.jackson.annotation,
- !org.codehaus.enunciate.jaxrs
- </Import-Package>
- <Export-Package>
- </Export-Package>
+ !org.codehaus.enunciate.jaxrs</Import-Package>
+ <Export-Package></Export-Package>
<Web-ContextPath>/ovsdb/nb/v2</Web-ContextPath>
<Jaxrs-Resources>,${classes;ANNOTATION;javax.ws.rs.Path}</Jaxrs-Resources>
</instructions>
<manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.enunciate</groupId>
+ <artifactId>maven-enunciate-plugin</artifactId>
+ <version>${enunciate.version}</version>
+ </plugin>
</plugins>
</build>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal</artifactId>
- <version>0.7.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>ovsdb</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>commons.northbound</artifactId>
- <version>0.4.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.enunciate</groupId>
- <artifactId>enunciate-core-annotations</artifactId>
- <version>${enunciate.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>${jackson.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
-
- </dependencies>
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
</project>
import org.opendaylight.controller.sal.utils.Status;
import org.opendaylight.controller.sal.utils.StatusCode;
import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
-import org.opendaylight.ovsdb.lib.table.internal.Tables;
+import org.opendaylight.ovsdb.lib.table.Table;
+import org.opendaylight.ovsdb.lib.table.Tables;
import org.opendaylight.ovsdb.plugin.OVSDBConfigService;
import org.opendaylight.ovsdb.plugin.StatusWithUuid;
import org.slf4j.Logger;
import org.opendaylight.ovsdb.lib.table.Queue;
import org.opendaylight.ovsdb.lib.table.SFlow;
import org.opendaylight.ovsdb.lib.table.SSL;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import java.util.Map;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public class OVSDBRows {
Map<String, Table<?>> rows;
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>commons.ovsdb</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- <relativePath>../commons/parent</relativePath>
- </parent>
- <scm>
- <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <tag>HEAD</tag>
- </scm>
- <artifactId>ovsdb</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <packaging>bundle</packaging>
-
- <properties>
- <skip.integrationtest>true</skip.integrationtest>
- <!-- used for filtering the integration test resource -->
- <ovsdbserver.ipaddress>192.168.56.10</ovsdbserver.ipaddress>
- <ovsdbserver.port>6640</ovsdbserver.port>
- </properties>
-
- <build>
- <testResources>
- <testResource>
- <directory>src/test/resources</directory>
- <filtering>true</filtering>
- </testResource>
- </testResources>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>2.3.6</version>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Import-Package>
- org.opendaylight.controller.sal.packet,
- org.opendaylight.controller.sal.action,
- org.opendaylight.controller.sal.discovery,
- org.opendaylight.controller.sal.topology,
- org.opendaylight.controller.sal.core,
- org.opendaylight.controller.sal.flowprogrammer,
- org.opendaylight.controller.sal.reader,
- org.opendaylight.controller.sal.inventory,
- org.opendaylight.controller.sal.match,
- org.opendaylight.controller.sal.utils,
- org.opendaylight.controller.sal.connection,
- org.opendaylight.controller.clustering.services,
- org.opendaylight.controller.sal.networkconfig.bridgedomain,
- org.apache.commons.lang3.builder,
- org.apache.commons.lang3.tuple,
- org.apache.felix.dm,
- org.slf4j,
- org.eclipse.osgi.framework.console,
- org.osgi.framework,
- javax.net.ssl,
- *
- </Import-Package>
- <Embed-Dependency>httpclient,commons-codec,httpcore-nio,javax.servlet-api,portlet-api,commons-collections;type=!pom;inline=false</Embed-Dependency>
- <Embed-Transitive>
- true
- </Embed-Transitive>
- <Bundle-Activator>
- org.opendaylight.ovsdb.plugin.Activator
- </Bundle-Activator>
- <Export-Package>
- org.opendaylight.ovsdb.lib.table, org.opendaylight.ovsdb.lib.table.internal, org.opendaylight.ovsdb.plugin, org.opendaylight.ovsdb.lib.notation
- </Export-Package>
- </instructions>
- <manifestLocation>${project.basedir}/META-INF</manifestLocation>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.16</version>
- <configuration>
- <excludes>
- <!-- Exclude integration tests -->
- <exclude>**/*IT</exclude>
- </excludes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <configuration>
- <skipITs>${skip.integrationtest}</skipITs>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>clustering.services</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal</artifactId>
- <version>0.7.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal.connection</artifactId>
- <version>0.1.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal.networkconfiguration</artifactId>
- <version>0.0.3-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.portlet</groupId>
- <artifactId>portlet-api</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.4</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore-nio</artifactId>
- <version>4.2.1</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-all</artifactId>
- <version>4.0.10.Final</version>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.3</version>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>${guava.version}</version>
- </dependency>
- <dependency>
- <groupId>equinoxSDK381</groupId>
- <artifactId>org.eclipse.osgi</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- </dependency>
- </dependencies>
-
- <profiles>
- <profile>
- <id>integrationtest</id>
- <activation>
- </activation>
- <properties>
- <skip.integrationtest>false</skip.integrationtest>
- </properties>
- </profile>
- </profiles>
-</project>
+++ /dev/null
-/*
- * [[ Authors will Fill in the Copyright header ]]
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Authors : Brent Salisbury, Madhu Venugopal, Aswin Raveendran
- */
-package org.opendaylight.ovsdb.lib.message;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.commons.collections.MapUtils;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.sal.connection.ConnectionConstants;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.ovsdb.lib.database.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.operations.InsertOperation;
-import org.opendaylight.ovsdb.lib.operations.MutateOperation;
-import org.opendaylight.ovsdb.lib.operations.Operation;
-import org.opendaylight.ovsdb.lib.operations.OperationResult;
-import org.opendaylight.ovsdb.lib.notation.Condition;
-import org.opendaylight.ovsdb.lib.notation.Function;
-import org.opendaylight.ovsdb.lib.notation.Mutation;
-import org.opendaylight.ovsdb.lib.notation.Mutator;
-import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
-import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.table.Bridge;
-import org.opendaylight.ovsdb.lib.table.Interface;
-import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
-import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
-import org.opendaylight.ovsdb.lib.table.internal.Tables;
-import org.opendaylight.ovsdb.plugin.Connection;
-import org.opendaylight.ovsdb.plugin.ConnectionService;
-import org.opendaylight.ovsdb.plugin.InventoryService;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-public class OVSDBNettyFactoryIT {
- InventoryService inventoryService;
- private static String bridgeIdentifier = "br1";
- private Properties props;
-
- @Before
- public void initialize() throws IOException {
- InputStream is = this.getClass().getClassLoader()
- .getResourceAsStream(
- "org/opendaylight/ovsdb/lib/message/integration-test.properties");
- if (is == null) {
- throw new IOException("Unable to load integration-test.properties");
- }
- props = new Properties();
- props.load(is);
-
- }
-
- @Test
- public void testSome() throws InterruptedException, ExecutionException,
- IOException {
- ConnectionService connectionService = new ConnectionService();
- connectionService.init();
- inventoryService = new InventoryService();
- inventoryService.init();
- connectionService.setInventoryServiceInternal(inventoryService);
- Node.NodeIDType.registerIDType("OVS", String.class);
- Map<ConnectionConstants, String> params = new HashMap<ConnectionConstants, String>();
- params.put(ConnectionConstants.ADDRESS,
- props.getProperty("ovsdbserver.ipaddress"));
- params.put(ConnectionConstants.PORT,
- props.getProperty("ovsdbserver.port", "6640"));
- Node node = connectionService.connect("TEST", params);
- if (node == null) {
- throw new IOException("Unable to connect to the host");
- }
-
- Connection connection = connectionService.getConnection(node);
- if (connection == null) {
- throw new IOException("Unable to connect to the host");
- }
-
- OvsdbRPC ovsdb = connection.getRpc();
- if (ovsdb == null) {
- throw new IOException("Unable to obtain RPC instance");
- }
-
- //GET DB-SCHEMA
- List<String> dbNames = Arrays.asList(Open_vSwitch.NAME.getName());
- ListenableFuture<DatabaseSchema> dbSchemaF = null; //ovsdb.get_schema(dbNames);
- DatabaseSchema databaseSchema = dbSchemaF.get();
- MapUtils.debugPrint(System.out, null, databaseSchema.getTables());
-
- // TEST MONITOR
- // YES it is expected to fail with "duplicate monitor ID" as we have a perpetual monitor in Inventory Service
- MonitorRequestBuilder monitorReq = new MonitorRequestBuilder();
- for (Table<?> table : Tables.getTables()) {
- monitorReq.monitor(table);
- }
-
- ListenableFuture<TableUpdates> monResponse = ovsdb.monitor(monitorReq);
- System.out.println("Monitor Request sent :");
- TableUpdates updates = monResponse.get();
- inventoryService.processTableUpdates(node, updates);
- inventoryService.printCache(node);
-
- // TRANSACT INSERT TEST
-
- Map<String, Table<?>> ovsTable = inventoryService.getTableCache(node, Open_vSwitch.NAME.getName());
- String newBridge = "new_bridge";
- String newInterface = "new_interface";
- String newPort = "new_port";
- String newSwitch = "new_switch";
-
- Operation addSwitchRequest = null;
-
- if(ovsTable != null){
- String ovsTableUUID = (String) ovsTable.keySet().toArray()[0];
- UUID bridgeUuidPair = new UUID(newBridge);
- Mutation bm = new Mutation("bridges", Mutator.INSERT, bridgeUuidPair);
- List<Mutation> mutations = new ArrayList<Mutation>();
- mutations.add(bm);
-
- UUID uuid = new UUID(ovsTableUUID);
- Condition condition = new Condition("_uuid", Function.EQUALS, uuid);
- List<Condition> where = new ArrayList<Condition>();
- where.add(condition);
- addSwitchRequest = new MutateOperation(Open_vSwitch.NAME.getName(), where, mutations);
- }
- else{
- Open_vSwitch ovsTableRow = new Open_vSwitch();
- OvsDBSet<UUID> bridges = new OvsDBSet<UUID>();
- UUID bridgeUuidPair = new UUID(newBridge);
- bridges.add(bridgeUuidPair);
- ovsTableRow.setBridges(bridges);
- addSwitchRequest = new InsertOperation(Open_vSwitch.NAME.getName(), newSwitch, ovsTableRow);
- }
-
- Bridge bridgeRow = new Bridge();
- bridgeRow.setName(bridgeIdentifier);
- OvsDBSet<UUID> ports = new OvsDBSet<UUID>();
- UUID port = new UUID(newPort);
- ports.add(port);
- bridgeRow.setPorts(ports);
- InsertOperation addBridgeRequest = new InsertOperation(Bridge.NAME.getName(), newBridge, bridgeRow);
-
- Port portRow = new Port();
- portRow.setName(bridgeIdentifier);
- OvsDBSet<UUID> interfaces = new OvsDBSet<UUID>();
- UUID interfaceid = new UUID(newInterface);
- interfaces.add(interfaceid);
- portRow.setInterfaces(interfaces);
- InsertOperation addPortRequest = new InsertOperation(Port.NAME.getName(), newPort, portRow);
-
- Interface interfaceRow = new Interface();
- interfaceRow.setName(bridgeIdentifier);
- interfaceRow.setType("internal");
- InsertOperation addIntfRequest = new InsertOperation(Interface.NAME.getName(), newInterface, interfaceRow);
-
- TransactBuilder transaction = new TransactBuilder();
- transaction.addOperations(new ArrayList<Operation>(
- Arrays.asList(addSwitchRequest, addIntfRequest, addPortRequest, addBridgeRequest)));
-
- ListenableFuture<List<OperationResult>> transResponse = ovsdb.transact(transaction);
- System.out.println("Transcation sent :");
- List<OperationResult> tr = transResponse.get();
- System.out.println("Transaction response : "+transResponse.toString());
- List<Operation> requests = transaction.getRequests();
- for (int i = 0; i < tr.size() ; i++) {
- if (i < requests.size()) requests.get(i).setResult(tr.get(i));
- }
-
- System.out.println("Request + Response : "+requests.toString());
- if (tr.size() > requests.size()) {
- System.out.println("ERROR : "+tr.get(tr.size()-1).getError());
- System.out.println("Details : "+tr.get(tr.size()-1).getDetails());
- }
-
- // TEST ECHO
-
- ListenableFuture<List<String>> some = ovsdb.echo();
- Object s = some.get();
- System.out.printf("Result of echo is %s \n", s);
-
- // TEST ECHO REQUEST/REPLY
- Thread.sleep(10000);
-
- connectionService.disconnect(node);
- }
-}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_commons</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <relativePath>../commons/parent</relativePath>
+ </parent>
+ <artifactId>ovsdb_plugin</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+
+ <properties>
+ <!-- used for filtering the integration test resource -->
+ <ovsdbserver.ipaddress>192.168.56.10</ovsdbserver.ipaddress>
+ <ovsdbserver.port>6640</ovsdbserver.port>
+ <skip.integrationtest>true</skip.integrationtest>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${jackson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>${guava.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.4</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>equinoxSDK381</groupId>
+ <artifactId>org.eclipse.osgi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-all</artifactId>
+ <version>4.0.10.Final</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore-nio</artifactId>
+ <version>4.2.1</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>clustering.services</artifactId>
+ <version>0.5.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal</artifactId>
+ <version>0.7.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal.connection</artifactId>
+ <version>0.1.2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal.networkconfiguration</artifactId>
+ <version>0.0.3-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.ovsdb</groupId>
+ <artifactId>ovsdb_library</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testResources>
+ <testResource>
+ <filtering>true</filtering>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.3.6</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Import-Package>org.opendaylight.controller.sal.packet,
+ org.opendaylight.controller.sal.action,
+ org.opendaylight.controller.sal.discovery,
+ org.opendaylight.controller.sal.topology,
+ org.opendaylight.controller.sal.core,
+ org.opendaylight.controller.sal.flowprogrammer,
+ org.opendaylight.controller.sal.reader,
+ org.opendaylight.controller.sal.inventory,
+ org.opendaylight.controller.sal.match,
+ org.opendaylight.controller.sal.utils,
+ org.opendaylight.controller.sal.connection,
+ org.opendaylight.controller.clustering.services,
+ org.opendaylight.controller.sal.networkconfig.bridgedomain,
+ org.opendaylight.ovsdb.lib.table,
+ org.opendaylight.ovsdb.plugin,
+ org.opendaylight.ovsdb.lib.notation,
+ org.opendaylight.ovsdb.lib.database,
+ org.opendaylight.ovsdb.lib.operations,
+ org.opendaylight.ovsdb.lib.message,
+ org.apache.commons.lang3.builder,
+ org.apache.commons.lang3.tuple,
+ org.apache.felix.dm,
+ org.slf4j,
+ org.eclipse.osgi.framework.console,
+ org.osgi.framework,
+ javax.net.ssl,
+ *</Import-Package>
+ <Embed-Dependency>httpclient,commons-codec,httpcore-nio,javax.servlet-api,portlet-api,commons-collections;type=!pom;inline=false</Embed-Dependency>
+ <Embed-Transitive>true</Embed-Transitive>
+ <Bundle-Activator>org.opendaylight.ovsdb.plugin.Activator</Bundle-Activator>
+ <Export-Package>org.opendaylight.ovsdb.plugin</Export-Package>
+ </instructions>
+ <manifestLocation>${project.basedir}/META-INF</manifestLocation>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <configuration>
+ <skipITs>${skip.integrationtest}</skipITs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.16</version>
+ <configuration>
+ <excludes>
+ <!-- Exclude integration tests -->
+ <exclude>**/*IT</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
+
+ <profiles>
+ <profile>
+ <id>integrationtest</id>
+ <activation></activation>
+ <properties>
+ <skip.integrationtest>false</skip.integrationtest>
+ </properties>
+ </profile>
+ </profiles>
+</project>
import org.opendaylight.ovsdb.lib.database.OVSInstance;
import org.opendaylight.ovsdb.lib.database.OvsdbType;
import org.opendaylight.ovsdb.lib.message.TransactBuilder;
-import org.opendaylight.ovsdb.lib.operations.DeleteOperation;
-import org.opendaylight.ovsdb.lib.operations.InsertOperation;
-import org.opendaylight.ovsdb.lib.operations.MutateOperation;
-import org.opendaylight.ovsdb.lib.operations.Operation;
-import org.opendaylight.ovsdb.lib.operations.OperationResult;
-import org.opendaylight.ovsdb.lib.operations.UpdateOperation;
import org.opendaylight.ovsdb.lib.notation.Condition;
import org.opendaylight.ovsdb.lib.notation.Function;
import org.opendaylight.ovsdb.lib.notation.Mutation;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
+import org.opendaylight.ovsdb.lib.operations.DeleteOperation;
+import org.opendaylight.ovsdb.lib.operations.InsertOperation;
+import org.opendaylight.ovsdb.lib.operations.MutateOperation;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.OperationResult;
+import org.opendaylight.ovsdb.lib.operations.UpdateOperation;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Controller;
import org.opendaylight.ovsdb.lib.table.Interface;
import org.opendaylight.ovsdb.lib.table.Queue;
import org.opendaylight.ovsdb.lib.table.SFlow;
import org.opendaylight.ovsdb.lib.table.SSL;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
if (connection != null) {
String newmanager = "new_manager";
- OVSInstance instance = OVSInstance.monitorOVS(connection);
+ OVSInstance instance = OVSInstance.monitorOVS();
Map ovsoutter = new LinkedHashMap();
Map ovsinner = new LinkedHashMap();
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Controller;
import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
-import org.opendaylight.ovsdb.lib.table.internal.Tables;
+import org.opendaylight.ovsdb.lib.table.Table;
+import org.opendaylight.ovsdb.lib.table.Tables;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
JsonRpcEndpoint factory = new JsonRpcEndpoint(objectMapper, channel);
JsonRpcServiceBinderHandler binderHandler = new JsonRpcServiceBinderHandler(factory);
- binderHandler.setNode(node);
+ binderHandler.setContext(node);
channel.pipeline().addLast(binderHandler);
OvsdbRPC ovsdb = factory.getClient(node, OvsdbRPC.class);
}
@Override
- public void update(Node node, UpdateNotification updateNotification) {
+ public void update(Object context, UpdateNotification updateNotification) {
if (updateNotification == null) return;
- inventoryServiceInternal.processTableUpdates(node, updateNotification.getUpdate());
+ inventoryServiceInternal.processTableUpdates((Node)context, updateNotification.getUpdate());
}
@Override
- public void locked(Node node, List<String> ids) {
+ public void locked(Object context, List<String> ids) {
// TODO Auto-generated method stub
}
@Override
- public void stolen(Node node, List<String> ids) {
+ public void stolen(Object context, List<String> ids) {
// TODO Auto-generated method stub
}
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.table.Bridge;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.controller.sal.inventory.IPluginInInventoryService;
import org.opendaylight.ovsdb.lib.database.DatabaseSchema;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public interface InventoryServiceInternal extends IPluginInInventoryService {
public ConcurrentMap<String, ConcurrentMap<String, Table<?>>> getCache(Node n);
import org.apache.commons.collections.MapUtils;
import org.opendaylight.ovsdb.lib.database.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public class NodeDB {
private DatabaseSchema schema;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.utils.Status;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public interface OVSDBConfigService {
public StatusWithUuid insertRow (Node node, String tableName, String parentUUID, Table<?> row);
package org.opendaylight.ovsdb.plugin;
import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.ovsdb.lib.table.internal.Table;
+import org.opendaylight.ovsdb.lib.table.Table;
public interface OVSDBInventoryListener {
public void nodeAdded(Node node);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <logger name="org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcEndpoint" level="TRACE" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <!--<logger name="com.lordofthejars.foo" level="INFO" additivity="false">-->
+ <!--<appender-ref ref="STDOUT" />-->
+ <!--</logger>-->
+
+ <root level="INFO">
+ <appender-ref ref="STDOUT" />
+ </root>
+
+</configuration>
\ No newline at end of file
--- /dev/null
+{
+ "Bridge": {
+ "788de61c-0e4f-43d8-a068-259e75aabbba": {
+ "new": {
+ "controller": [
+ "set",
+ []
+ ],
+ "fail_mode": [
+ "set",
+ []
+ ],
+ "name": "br0",
+ "ports": [
+ "set",
+ [
+ [
+ "uuid",
+ "f6018e7a-7ca5-4e72-a744-a9b434f47011"
+ ],
+ [
+ "uuid",
+ "fe3c89fd-2ff3-44d8-9f27-f9c7ac2a693d"
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ "Port": {
+ "f6018e7a-7ca5-4e72-a744-a9b434f47011": {
+ "new": {
+ "interfaces": [
+ "uuid",
+ "13548b08-dca3-4d4b-9e9b-f50c237dcb9e"
+ ],
+ "name": "vif0",
+ "tag": [
+ "set",
+ []
+ ],
+ "trunks": [
+ "set",
+ []
+ ]
+ }
+ },
+ "fe3c89fd-2ff3-44d8-9f27-f9c7ac2a693d": {
+ "new": {
+ "interfaces": [
+ "uuid",
+ "88ae29fb-8c91-41a9-a14f-a74126e790c0"
+ ],
+ "name": "br0",
+ "tag": [
+ "set",
+ []
+ ],
+ "trunks": [
+ "set",
+ []
+ ]
+ }
+ }
+ },
+ "Interface": {
+ "13548b08-dca3-4d4b-9e9b-f50c237dcb9e": {
+ "new": {
+ "name": "vif0",
+ "options": [
+ "map",
+ [["remote_ip","192.168.1.165"]]
+ ],
+ "type": ""
+ }
+ },
+ "88ae29fb-8c91-41a9-a14f-a74126e790c0": {
+ "new": {
+ "name": "br0",
+ "options": [
+ "map",
+ []
+ ],
+ "type": "internal"
+ }
+ }
+ }
+
+}
--- /dev/null
+{
+ "Bridge": {
+ "788de61c-0e4f-43d8-a068-259e75aabbba": {
+ "new": {
+ "controller": [
+ "set",
+ []
+ ],
+ "fail_mode": [
+ "set",
+ []
+ ],
+ "name": "br0",
+ "ports": [
+ "set",
+ [
+ [
+ "uuid",
+ "f6018e7a-7ca5-4e72-a744-a9b434f47011"
+ ],
+ [
+ "uuid",
+ "fe3c89fd-2ff3-44d8-9f27-f9c7ac2a693d"
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ "Interface": {
+ "13548b08-dca3-4d4b-9e9b-f50c237dcb9e": {
+ "new": {
+ "name": "vif0",
+ "options": [
+ "map",
+ []
+ ],
+ "type": ""
+ }
+ },
+ "88ae29fb-8c91-41a9-a14f-a74126e790c0": {
+ "new": {
+ "name": "br0",
+ "options": [
+ "map",
+ []
+ ],
+ "type": "internal"
+ }
+ }
+ },
+ "Open_vSwitch": {
+ "987c42d0-eab0-43d9-a32b-4246973706c2": {
+ "new": {
+ "bridges": [
+ "uuid",
+ "788de61c-0e4f-43d8-a068-259e75aabbba"
+ ],
+ "cur_cfg": 7,
+ "manager_options": [
+ "set",
+ []
+ ],
+ "ovs_version": "1.4.3"
+ }
+ }
+ },
+ "Port": {
+ "f6018e7a-7ca5-4e72-a744-a9b434f47011": {
+ "new": {
+ "interfaces": [
+ "uuid",
+ "13548b08-dca3-4d4b-9e9b-f50c237dcb9e"
+ ],
+ "name": "vif0",
+ "tag": [
+ "set",
+ []
+ ],
+ "trunks": [
+ "set",
+ []
+ ]
+ }
+ },
+ "fe3c89fd-2ff3-44d8-9f27-f9c7ac2a693d": {
+ "new": {
+ "interfaces": [
+ "uuid",
+ "88ae29fb-8c91-41a9-a14f-a74126e790c0"
+ ],
+ "name": "br0",
+ "tag": [
+ "set",
+ []
+ ],
+ "trunks": [
+ "set",
+ []
+ ]
+ }
+ }
+ }
+}
--- /dev/null
+{
+ "id": 0,
+ "result": {
+ "tables": {
+ "Port": {
+ "columns": {
+ "name": {
+ "mutable": false,
+ "type": "string"
+ },
+ "statistics": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "integer",
+ "max": "unlimited"
+ }
+ },
+ "vlan_mode": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "access",
+ "native-tagged",
+ "native-untagged",
+ "trunk"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "qos": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "QoS"
+ },
+ "min": 0
+ }
+ },
+ "status": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "trunks": {
+ "type": {
+ "key": {
+ "maxInteger": 4095,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0,
+ "max": 4096
+ }
+ },
+ "mac": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "interfaces": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "Interface"
+ },
+ "max": "unlimited"
+ }
+ },
+ "bond_downdelay": {
+ "type": "integer"
+ },
+ "bond_mode": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "active-backup",
+ "balance-slb",
+ "balance-tcp",
+ "stable"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "bond_updelay": {
+ "type": "integer"
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "tag": {
+ "type": {
+ "key": {
+ "maxInteger": 4095,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "bond_fake_iface": {
+ "type": "boolean"
+ },
+ "fake_bridge": {
+ "type": "boolean"
+ },
+ "lacp": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "active",
+ "off",
+ "passive"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ }
+ },
+ "indexes": [
+ [
+ "name"
+ ]
+ ]
+ },
+ "Manager": {
+ "columns": {
+ "is_connected": {
+ "ephemeral": true,
+ "type": "boolean"
+ },
+ "target": {
+ "type": "string"
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "max_backoff": {
+ "type": {
+ "key": {
+ "minInteger": 1000,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "connection_mode": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "in-band",
+ "out-of-band"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "status": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "inactivity_probe": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ }
+ },
+ "indexes": [
+ [
+ "target"
+ ]
+ ]
+ },
+ "Bridge": {
+ "columns": {
+ "name": {
+ "mutable": false,
+ "type": "string"
+ },
+ "flood_vlans": {
+ "type": {
+ "key": {
+ "maxInteger": 4095,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0,
+ "max": 4096
+ }
+ },
+ "netflow": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "NetFlow"
+ },
+ "min": 0
+ }
+ },
+ "mirrors": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "Mirror"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "status": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "datapath_id": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "controller": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "Controller"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "protocols": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "OpenFlow10",
+ "OpenFlow12",
+ "OpenFlow13"
+ ]
+ ]
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "fail_mode": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "secure",
+ "standalone"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "ports": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "Port"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "flow_tables": {
+ "type": {
+ "key": {
+ "maxInteger": 254,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0,
+ "value": {
+ "type": "uuid",
+ "refTable": "Flow_Table"
+ },
+ "max": "unlimited"
+ }
+ },
+ "sflow": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "sFlow"
+ },
+ "min": 0
+ }
+ },
+ "datapath_type": {
+ "type": "string"
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "stp_enable": {
+ "type": "boolean"
+ }
+ },
+ "indexes": [
+ [
+ "name"
+ ]
+ ]
+ },
+ "Interface": {
+ "columns": {
+ "options": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "name": {
+ "mutable": false,
+ "type": "string"
+ },
+ "statistics": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "integer",
+ "max": "unlimited"
+ }
+ },
+ "link_speed": {
+ "ephemeral": true,
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "mtu": {
+ "ephemeral": true,
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "mac_in_use": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "type": {
+ "type": "string"
+ },
+ "ingress_policing_rate": {
+ "type": {
+ "key": {
+ "minInteger": 0,
+ "type": "integer"
+ }
+ }
+ },
+ "cfm_remote_opstate": {
+ "ephemeral": true,
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "down",
+ "up"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "status": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "mac": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "ofport": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "cfm_fault_status": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "duplex": {
+ "ephemeral": true,
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "full",
+ "half"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "lacp_current": {
+ "ephemeral": true,
+ "type": {
+ "key": "boolean",
+ "min": 0
+ }
+ },
+ "cfm_fault": {
+ "ephemeral": true,
+ "type": {
+ "key": "boolean",
+ "min": 0
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "admin_state": {
+ "ephemeral": true,
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "down",
+ "up"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "link_state": {
+ "ephemeral": true,
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "down",
+ "up"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "cfm_remote_mpids": {
+ "ephemeral": true,
+ "type": {
+ "key": "integer",
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "cfm_mpid": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "ofport_request": {
+ "type": {
+ "key": {
+ "maxInteger": 65279,
+ "minInteger": 1,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "ingress_policing_burst": {
+ "type": {
+ "key": {
+ "minInteger": 0,
+ "type": "integer"
+ }
+ }
+ },
+ "cfm_health": {
+ "ephemeral": true,
+ "type": {
+ "key": {
+ "maxInteger": 100,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "link_resets": {
+ "ephemeral": true,
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ }
+ },
+ "indexes": [
+ [
+ "name"
+ ]
+ ]
+ },
+ "SSL": {
+ "columns": {
+ "ca_cert": {
+ "type": "string"
+ },
+ "private_key": {
+ "type": "string"
+ },
+ "bootstrap_ca_cert": {
+ "type": "boolean"
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "certificate": {
+ "type": "string"
+ }
+ },
+ "maxRows": 1
+ },
+ "Open_vSwitch": {
+ "columns": {
+ "ovs_version": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "system_version": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "bridges": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "Bridge"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "statistics": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "next_cfg": {
+ "type": "integer"
+ },
+ "manager_options": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "Manager"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "system_type": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "ssl": {
+ "type": {
+ "key": {
+ "type": "uuid",
+ "refTable": "SSL"
+ },
+ "min": 0
+ }
+ },
+ "db_version": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "cur_cfg": {
+ "type": "integer"
+ }
+ },
+ "maxRows": 1,
+ "isRoot": true
+ },
+ "Queue": {
+ "columns": {
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "dscp": {
+ "type": {
+ "key": {
+ "maxInteger": 63,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ }
+ },
+ "isRoot": true
+ },
+ "NetFlow": {
+ "columns": {
+ "engine_type": {
+ "type": {
+ "key": {
+ "maxInteger": 255,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "targets": {
+ "type": {
+ "key": "string",
+ "max": "unlimited"
+ }
+ },
+ "add_id_to_interface": {
+ "type": "boolean"
+ },
+ "active_timeout": {
+ "type": {
+ "key": {
+ "minInteger": -1,
+ "type": "integer"
+ }
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "engine_id": {
+ "type": {
+ "key": {
+ "maxInteger": 255,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ }
+ }
+ },
+ "Mirror": {
+ "columns": {
+ "name": {
+ "type": "string"
+ },
+ "output_port": {
+ "type": {
+ "key": {
+ "refType": "weak",
+ "type": "uuid",
+ "refTable": "Port"
+ },
+ "min": 0
+ }
+ },
+ "output_vlan": {
+ "type": {
+ "key": {
+ "maxInteger": 4095,
+ "minInteger": 1,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "statistics": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "integer",
+ "max": "unlimited"
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "select_dst_port": {
+ "type": {
+ "key": {
+ "refType": "weak",
+ "type": "uuid",
+ "refTable": "Port"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "select_all": {
+ "type": "boolean"
+ },
+ "select_vlan": {
+ "type": {
+ "key": {
+ "maxInteger": 4095,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0,
+ "max": 4096
+ }
+ },
+ "select_src_port": {
+ "type": {
+ "key": {
+ "refType": "weak",
+ "type": "uuid",
+ "refTable": "Port"
+ },
+ "min": 0,
+ "max": "unlimited"
+ }
+ }
+ }
+ },
+ "QoS": {
+ "columns": {
+ "queues": {
+ "type": {
+ "key": {
+ "maxInteger": 4294967295,
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0,
+ "value": {
+ "type": "uuid",
+ "refTable": "Queue"
+ },
+ "max": "unlimited"
+ }
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "isRoot": true
+ },
+ "Controller": {
+ "columns": {
+ "is_connected": {
+ "ephemeral": true,
+ "type": "boolean"
+ },
+ "enable_async_messages": {
+ "type": {
+ "key": "boolean",
+ "min": 0
+ }
+ },
+ "controller_rate_limit": {
+ "type": {
+ "key": {
+ "minInteger": 100,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "target": {
+ "type": "string"
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "other_config": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "local_netmask": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "local_gateway": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "max_backoff": {
+ "type": {
+ "key": {
+ "minInteger": 1000,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ },
+ "local_ip": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "connection_mode": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "in-band",
+ "out-of-band"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "status": {
+ "ephemeral": true,
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "role": {
+ "ephemeral": true,
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "master",
+ "other",
+ "slave"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "inactivity_probe": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "controller_burst_limit": {
+ "type": {
+ "key": {
+ "minInteger": 25,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ }
+ }
+ },
+ "Flow_Table": {
+ "columns": {
+ "groups": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "max": "unlimited"
+ }
+ },
+ "name": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "overflow_policy": {
+ "type": {
+ "key": {
+ "type": "string",
+ "enum": [
+ "set",
+ [
+ "evict",
+ "refuse"
+ ]
+ ]
+ },
+ "min": 0
+ }
+ },
+ "flow_limit": {
+ "type": {
+ "key": {
+ "minInteger": 0,
+ "type": "integer"
+ },
+ "min": 0
+ }
+ }
+ }
+ },
+ "sFlow": {
+ "columns": {
+ "polling": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "targets": {
+ "type": {
+ "key": "string",
+ "max": "unlimited"
+ }
+ },
+ "header": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ },
+ "agent": {
+ "type": {
+ "key": "string",
+ "min": 0
+ }
+ },
+ "external_ids": {
+ "type": {
+ "key": "string",
+ "min": 0,
+ "value": "string",
+ "max": "unlimited"
+ }
+ },
+ "sampling": {
+ "type": {
+ "key": "integer",
+ "min": 0
+ }
+ }
+ }
+ }
+ },
+ "cksum": "2180939265 17455",
+ "name": "Open_vSwitch",
+ "version": "6.12.0"
+ },
+ "error": null
+}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <prerequisites>
- <maven>3.0</maven>
- </prerequisites>
<parent>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>commons.ovsdb</artifactId>
+ <artifactId>ovsdb_commons</artifactId>
<version>1.1.0-SNAPSHOT</version>
<relativePath>commons/parent</relativePath>
</parent>
<groupId>org.opendaylight.ovsdb</groupId>
- <artifactId>ovsdb.project</artifactId>
+ <artifactId>ovsdb_project</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <scm>
- <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
- <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
- <tag>HEAD</tag>
- </scm>
+ <prerequisites>
+ <maven>3.0</maven>
+ </prerequisites>
<modules>
- <module>ovsdb</module>
- <module>northbound/ovsdb</module>
+ <module>library</module>
+ <module>plugin</module>
+ <module>northbound</module>
<module>neutron</module>
<module>commons/parent</module>
<module>distribution/opendaylight</module>
</modules>
+ <scm>
+ <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
+ <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+ <tag>HEAD</tag>
+ <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+ </scm>
</project>