BUG-48: introduce topology and programming models 12/1712/8
authorRobert Varga <rovarga@cisco.com>
Mon, 7 Oct 2013 09:32:38 +0000 (11:32 +0200)
committerRobert Varga <rovarga@cisco.com>
Tue, 15 Oct 2013 16:05:59 +0000 (18:05 +0200)
This drops in a couple new components, which are necessary
for providing topology export and tunnel programming.

Change-Id: If15db08635cab91e72242830f0067258b2311b83
Signed-off-by: Robert Varga <rovarga@cisco.com>
18 files changed:
concepts/.gitignore
pcep/api/pom.xml
pom.xml
programming/api/pom.xml [new file with mode: 0644]
programming/api/src/main/yang/programming.yang [new file with mode: 0644]
programming/pom.xml [new file with mode: 0644]
programming/tunnel-api/pom.xml [new file with mode: 0644]
programming/tunnel-api/src/main/yang/topology-tunnel-programming.yang [new file with mode: 0644]
topology/api/pom.xml [new file with mode: 0644]
topology/pom.xml [new file with mode: 0644]
topology/segment-routing/pom.xml [new file with mode: 0644]
topology/segment-routing/src/main/yang/network-topology-sr.yang [moved from pcep/api/src/main/yang/network-topology-sr.yang with 100% similarity]
topology/segment-routing/src/main/yang/topology-tunnel-sr.yang [moved from pcep/api/src/main/yang/topology-tunnel-sr.yang with 100% similarity]
topology/tunnel-api/pom.xml [new file with mode: 0644]
topology/tunnel-api/src/main/yang/topology-tunnel-p2p.yang [moved from pcep/api/src/main/yang/topology-tunnel-p2p.yang with 100% similarity]
topology/tunnel-api/src/main/yang/topology-tunnel.yang [moved from pcep/api/src/main/yang/topology-tunnel.yang with 100% similarity]
topology/tunnel-pcep/pom.xml [new file with mode: 0644]
topology/tunnel-pcep/src/main/yang/topology-tunnel-pcep.yang [moved from pcep/api/src/main/yang/topology-tunnel-pcep.yang with 100% similarity]

index fc1d35eb24cf316de1d8264aa24fb892be6a0551..6590c79cf818a7d575897e1be66b5cbd25cd0c14 100644 (file)
@@ -1,3 +1,4 @@
 target
 .classpath
 .settings
+/target
index 87cf4d6b59f37e4830579f2bcaa350b3672d7e57..1500d9eab536ab41596a44d0013342a6129e9522 100644 (file)
             <artifactId>ietf-inet-types</artifactId>
             <version>${ietf.types.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools.model</groupId>
-            <artifactId>ietf-topology</artifactId>
-            <version>2013.07.12-SNAPSHOT</version>
-        </dependency>
        </dependencies>
 
        <build>
diff --git a/pom.xml b/pom.xml
index b2d14e7fcb3237b55f7110710c42fcdb3f50c57f..ae5af762be77d3719f018b4b81b5a6e12291c3a7 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -44,7 +44,9 @@
                <module>integration-tests</module>
                <module>mockito-configuration</module>
                <module>pcep</module>
+               <module>programming</module>
                <module>rsvp</module>
+               <module>topology</module>
                <module>util</module>
        </modules>
 
diff --git a/programming/api/pom.xml b/programming/api/pom.xml
new file mode 100644 (file)
index 0000000..0298a43
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>programming-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>programming-api</artifactId>
+       <description>Programming API</description>
+       <packaging>bundle</packaging>
+       <name>${project.artifactId}</name>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-binding</artifactId>
+            <version>${yang.binding.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+            <version>${yangtools.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools.model</groupId>
+            <artifactId>ietf-inet-types</artifactId>
+            <version>${ietf.types.version}</version>
+        </dependency>
+       </dependencies>
+
+       <build>
+        <plugins>
+           <plugin>
+               <groupId>org.opendaylight.yangtools</groupId>
+               <artifactId>yang-maven-plugin</artifactId>
+               <version>${yangtools.version}</version>
+               <executions>
+                   <execution>
+                       <goals>
+                           <goal>generate-sources</goal>
+                       </goals>
+                       <configuration>
+                           <yangFilesRootDir>src/main/yang</yangFilesRootDir>
+                           <codeGenerators>
+                               <generator>
+                                   <codeGeneratorClass>
+                                       org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+                                   </codeGeneratorClass>
+                                   <outputBaseDir>
+                                       target/generated-sources/sal
+                                   </outputBaseDir>
+                               </generator>
+                           </codeGenerators>
+                           <inspectDependencies>true</inspectDependencies>
+                       </configuration>
+                   </execution>
+               </executions>
+               <dependencies>
+                   <dependency>
+                       <groupId>org.opendaylight.yangtools</groupId>
+                       <artifactId>maven-sal-api-gen-plugin</artifactId>
+                       <version>${yang.binding.version}</version>
+                       <type>jar</type>
+                   </dependency>
+               </dependencies>
+           </plugin>
+           <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>${maven.bundle.version}</version>
+               <extensions>true</extensions>
+               <configuration>
+                   <instructions>
+                       <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+                       <Export-Package>
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev130930.*,
+                       </Export-Package>
+                   </instructions>
+               </configuration>
+           </plugin>
+               </plugins>
+       </build>
+
+       <distributionManagement>
+               <site>
+                       <id>${project.artifactId}</id>
+                       <name>PROGRAMMING-API Module site</name>
+                       <url>${basedir}/target/site/${project.artifactId}</url>
+               </site>
+       </distributionManagement>
+
+</project>
diff --git a/programming/api/src/main/yang/programming.yang b/programming/api/src/main/yang/programming.yang
new file mode 100644 (file)
index 0000000..02d2665
--- /dev/null
@@ -0,0 +1,263 @@
+module programming {
+       yang-version 1;
+       namespace "urn:opendaylight:params:xml:ns:yang:programming";
+       prefix "pgm";
+
+       import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+
+       organization "Cisco Systems, Inc.";
+       contact "Robert Varga <rovarga@cisco.com>";
+
+       description
+               "This module contains the basic programming model primitices.
+
+               Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
+
+               This program and the accompanying materials are made available
+               under the terms of the Eclipse Public License v1.0 which
+               accompanies this distribution, and is available at
+               http://www.eclipse.org/legal/epl-v10.html";
+
+       revision "2013-09-30" {
+               description
+                       "Initial revision.";
+               reference "";
+       }
+
+       typedef nanotime {
+               description
+                       "Absolute number of nanoseconds since the start of the
+                       UNIX epoch.";
+               type uint64;
+               units nanoseconds;
+       }
+
+       typedef instruction-id {
+               type inet:uri;
+       }
+
+       typedef instruction-status {
+               type enumeration {
+                       enum queued {
+                               description
+                                       "Its immediate prerequisite intructions
+                                       have not been resolved. The instruction
+                                       can be cancelled. If any of its
+                                       prerequisites moves to Unknown, Failed or
+                                       Cancelled state, the instruction itself
+                                       moves into Cancelled state. Once all of
+                                       the dependencies move into Successful
+                                       state, this instruction moves into
+                                       Scheduled state. If this instruction's
+                                       deadline passes, it transitions into
+                                       Cancelled state.";
+                       }
+                       enum scheduled {
+                               description
+                                       "All of instruction's prerequisites have
+                                       been successful and this instruction is
+                                       ready to be executed, but the resources
+                                       needed for its execution are not ready.
+                                       The instruction can be Cancelled. If this
+                                       instruction's deadline passes, it
+                                       transitions into Failed state.";
+                       }
+                       enum executing {
+                               description
+                                       "The instruction is being executed. It
+                                       cannot be Cancelled on request. If the
+                                       execution does not complete within the
+                                       specified deadline, this instruction
+                                       moves into Unknown state. If the
+                                       instruction's execution completes within
+                                       the deadline, it moves into Successful,
+                                       Failed or Cancelled state, based on the
+                                       effects it has had on state.";
+                       }
+                       enum cancelled {
+                               description
+                                       "The instruction has never executed, or
+                                       has been executing but all its effects
+                                       have been rolled back. System state is
+                                       such as if the instruction never
+                                       executed.";
+                       }
+                       enum failed {
+                               description
+                                       "The instruciton has failed to execute
+                                       completely, but some of its effects may
+                                       have been recorded in the state. A full
+                                       state resynchronization is required to
+                                       recover from this failure, and even then
+                                       an operator intervention may be required
+                                       (if, for example the effect is not
+                                       representable in exposed abstractions.)";
+                       }
+                       enum successful {
+                               description
+                                       "The instruction has executed competely
+                                       and its effects have been recorded in
+                                       state.";
+                       }
+                       enum unknown {
+                               description
+                                       "The instruction has failed to execute
+                                       within the deadline allocated to it.
+                                       It's effects on the state are unknown
+                                       at this point, but can be assumed to
+                                       either atomically happen or not-happen.
+                                       This state is transient and the
+                                       instruction will eventually (at some
+                                       indeterminate point in the future) enter
+                                       either Successful, Failed or Cancelled
+                                       state.";
+                       }
+               }
+       }
+
+       grouping instruction-queue {
+               leaf maximum-instructions {
+                       config false;
+
+                       description
+                               "Maximum number of instructions which can be
+                               enqueued at the same time.";
+
+                       type uint64;
+                       mandatory true;
+               }
+
+               leaf available-instructions {
+                       config false;
+
+                       description
+                               "Number of currently available instruction
+                               slots.";
+
+                       type uint64;
+                       mandatory true;
+               }
+
+               list instructions {
+                       config false;
+
+                       leaf id {
+                               type instruction-id;
+                       }
+                       key id;
+
+                       leaf status {
+                               type instruction-status;
+                               mandatory true;
+                       }
+
+                       leaf deadline {
+                               type nanotime;
+                               mandatory true;
+                       }
+               }
+       }
+
+       identity cancel-failure {
+               description
+                       "The base identity of various reasons for an
+                       instruction cancellation to fail.";
+       }
+
+       identity unknown-instruction {
+               description
+                       "The specified instruction ID has not been found
+                       in the queue.";
+               base cancel-failure;
+       }
+
+       identity uncancellable-instruction {
+               description
+                       "The specified instruction is in process of being
+                       executed and cannot be cancelled. Wait for the
+                       execution process to complete.";
+       }
+
+       rpc cancel-instruction {
+               input {
+                       leaf id {
+                               type instruction-id;
+                               mandatory true;
+                       }
+               }
+
+               output {
+                       leaf failure {
+                               type identityref {
+                                       base cancel-failure;
+                               }
+                       }
+               }
+       }
+
+       identity submit-failure {
+               description
+                       "The base identity of various reasons for an
+                       instruction submission to fail.";
+       }
+
+       identity duplicate-instruction-id {
+               description
+                       "Instruction ID clashes with an instruction with an
+                       already-queued instruction. Assign a new identifier
+                       or wait for the enqueued instruction to complete.";
+       }
+
+       identity too-many-instructions {
+               description
+                       "Instruction queue size exceeded.";
+       }
+
+       identity instruction-type {
+               description
+                       "Base intruction type. This identity should be
+                       extended for each individual instruction defined.";
+       }
+
+       rpc submit-instruction {
+               input {
+                       leaf id {
+                               type instruction-id;
+                               mandatory true;
+                       }
+
+                       leaf type {
+                               type identityref {
+                                       base instruction-type;
+                               }
+                               mandatory true;
+                       }
+
+                       leaf deadline {
+                               type nanotime;
+                               mandatory true;
+                       }
+
+                       leaf-list preconditions {
+                               type instruction-id;
+                       }
+
+                       choice arguments {
+
+                       }
+               }
+
+               output {
+                       choice result {
+                               case failure {
+                                       leaf failure {
+                                               type identityref {
+                                                       base submit-failure;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/programming/pom.xml b/programming/pom.xml
new file mode 100644 (file)
index 0000000..76289fb
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: --><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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>protocol-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>programming-parent</artifactId>
+       <description>Programming parent</description>
+       <packaging>pom</packaging>
+       <name>${project.artifactId}</name>
+       
+       <modules>
+               <module>api</module>
+               <module>tunnel-api</module>
+    </modules>
+</project>
diff --git a/programming/tunnel-api/pom.xml b/programming/tunnel-api/pom.xml
new file mode 100644 (file)
index 0000000..2adf708
--- /dev/null
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>programming-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>programming-tunnel-api</artifactId>
+       <description>Programming API</description>
+       <packaging>bundle</packaging>
+       <name>${project.artifactId}</name>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <dependencies>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>programming-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>topology-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>topology-tunnel-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-binding</artifactId>
+            <version>${yang.binding.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+            <version>${yangtools.version}</version>
+        </dependency>
+       </dependencies>
+
+       <build>
+        <plugins>
+           <plugin>
+               <groupId>org.opendaylight.yangtools</groupId>
+               <artifactId>yang-maven-plugin</artifactId>
+               <version>${yangtools.version}</version>
+               <executions>
+                   <execution>
+                       <goals>
+                           <goal>generate-sources</goal>
+                       </goals>
+                       <configuration>
+                           <yangFilesRootDir>src/main/yang</yangFilesRootDir>
+                           <codeGenerators>
+                               <generator>
+                                   <codeGeneratorClass>
+                                       org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+                                   </codeGeneratorClass>
+                                   <outputBaseDir>
+                                       target/generated-sources/sal
+                                   </outputBaseDir>
+                               </generator>
+                           </codeGenerators>
+                           <inspectDependencies>true</inspectDependencies>
+                       </configuration>
+                   </execution>
+               </executions>
+               <dependencies>
+                   <dependency>
+                       <groupId>org.opendaylight.yangtools</groupId>
+                       <artifactId>maven-sal-api-gen-plugin</artifactId>
+                       <version>${yang.binding.version}</version>
+                       <type>jar</type>
+                   </dependency>
+               </dependencies>
+           </plugin>
+           <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>${maven.bundle.version}</version>
+               <extensions>true</extensions>
+               <configuration>
+                   <instructions>
+                       <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+                       <Export-Package>
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.programming.rev130930.*,
+                       </Export-Package>
+                   </instructions>
+               </configuration>
+           </plugin>
+               </plugins>
+       </build>
+
+       <distributionManagement>
+               <site>
+                       <id>${project.artifactId}</id>
+                       <name>PROGRAMMING-TUNNEL-API Module site</name>
+                       <url>${basedir}/target/site/${project.artifactId}</url>
+               </site>
+       </distributionManagement>
+
+</project>
diff --git a/programming/tunnel-api/src/main/yang/topology-tunnel-programming.yang b/programming/tunnel-api/src/main/yang/topology-tunnel-programming.yang
new file mode 100644 (file)
index 0000000..c12a5d2
--- /dev/null
@@ -0,0 +1,140 @@
+module topology-tunnel-programming {
+       yang-version 1;
+       namespace "urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming";
+       prefix "ttp";
+
+       import network-topology { prefix nt; revision-date 2013-07-12; }
+       import topology-tunnel { prefix tt; revision-date 2013-08-19; }
+       import programming { prefix pgm; revision-date 2013-09-30; }
+
+       organization "Cisco Systems, Inc.";
+       contact "Robert Varga <rovarga@cisco.com>";
+
+       description
+               "This module contains the programming extensions for tunnel
+               topologies.
+
+               Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
+
+               This program and the accompanying materials are made available
+               under the terms of the Eclipse Public License v1.0 which
+               accompanies this distribution, and is available at
+               http://www.eclipse.org/legal/epl-v10.html";
+
+       revision "2013-09-30" {
+               description
+                       "Initial revision.";
+               reference "";
+       }
+
+       identity attach-path-instruction {
+               base pgm:instruction-type;
+       }
+
+       identity create-path-instruction {
+               base pgm:instruction-type;
+       }
+
+       identity destroy-path-instruction {
+               base pgm:instruction-type;
+       }
+
+       identity detach-path-instruction {
+               base pgm:instruction-type;
+       }
+
+       augment "/pgm:submit-instruction/pgm:input/pgm:arguments" {
+               when "../type = attach-path-instruction";
+
+               case attach-path {
+                       container attach-path {
+                               leaf link-id {
+                                       type nt:link-id;
+                                       mandatory true;
+                               }
+                               leaf path-id {
+                                       type tt:path-id;
+                                       mandatory true;
+                               }
+                       }
+               }
+       }
+
+       augment "/pgm:submit-instruction/pgm:input/pgm:arguments" {
+               when "../type = create-path-instruction";
+
+               case create-path {
+                       container create-path {
+                               leaf path-id {
+                                       type tt:path-id;
+                                       mandatory true;
+                               }
+                       }
+               }
+       }
+
+       augment "/pgm:submit-instruction/pgm:input/pgm:arguments" {
+               when "../type = destroy-path-instruction";
+
+               case destroy-path {
+                       container destroy-path {
+                               leaf path-id {
+                                       type tt:path-id;
+                                       mandatory true;
+                               }
+                       }
+               }
+       }
+
+       augment "/pgm:submit-instruction/pgm:input/pgm:arguments" {
+               when "../type = detach-path-instruction";
+
+               case detach-path {
+                       container detach-path {
+                               leaf link-id {
+                                       type nt:link-id;
+                                       mandatory true;
+                               }
+                               leaf path-id {
+                                       type tt:path-id;
+                                       mandatory true;
+                               }
+                       }
+               }
+       }
+
+       identity create-tunnel-instruction {
+               base pgm:instruction-type;
+       }
+
+       identity destroy-tunnel-instruction {
+               base pgm:instruction-type;
+       }
+
+       augment "/pgm:submit-instruction/pgm:input/pgm:arguments" {
+               when "../type = create-tunnel-instruction";
+
+               case create-tunnel {
+                       container create-tunnel {
+                               leaf link-id {
+                                       type nt:link-id;
+                                       mandatory true;
+                               }
+                       }
+               }
+       }
+
+       augment "/pgm:submit-instruction/pgm:input/pgm:arguments" {
+               when "../type = destroy-tunnel-instruction";
+
+               case destroy-tunnel {
+                       container destroy-tunnel {
+                               leaf link-id {
+                                       type nt:link-id;
+                                       mandatory true;
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/topology/api/pom.xml b/topology/api/pom.xml
new file mode 100644 (file)
index 0000000..a05c153
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>topology-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>topology-api</artifactId>
+       <description>Topology API</description>
+       <packaging>bundle</packaging>
+       <name>${project.artifactId}</name>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-binding</artifactId>
+            <version>${yang.binding.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+            <version>${yangtools.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools.model</groupId>
+            <artifactId>ietf-inet-types</artifactId>
+            <version>${ietf.types.version}</version>
+        </dependency>
+       </dependencies>
+
+       <build>
+        <plugins>
+           <plugin>
+               <groupId>org.opendaylight.yangtools</groupId>
+               <artifactId>yang-maven-plugin</artifactId>
+               <version>${yangtools.version}</version>
+               <executions>
+                   <execution>
+                       <goals>
+                           <goal>generate-sources</goal>
+                       </goals>
+                       <configuration>
+                           <yangFilesRootDir>src/main/yang</yangFilesRootDir>
+                           <codeGenerators>
+                               <generator>
+                                   <codeGeneratorClass>
+                                       org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+                                   </codeGeneratorClass>
+                                   <outputBaseDir>
+                                       target/generated-sources/sal
+                                   </outputBaseDir>
+                               </generator>
+                           </codeGenerators>
+                           <inspectDependencies>true</inspectDependencies>
+                       </configuration>
+                   </execution>
+               </executions>
+               <dependencies>
+                   <dependency>
+                       <groupId>org.opendaylight.yangtools</groupId>
+                       <artifactId>maven-sal-api-gen-plugin</artifactId>
+                       <version>${yang.binding.version}</version>
+                       <type>jar</type>
+                   </dependency>
+               </dependencies>
+           </plugin>
+           <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>${maven.bundle.version}</version>
+               <extensions>true</extensions>
+               <configuration>
+                   <instructions>
+                       <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+                       <Export-Package>
+                           org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ospf.topology.rev130712.*,
+                           org.opendaylight.yang.gen.v1.urn.TBD.params.xml.ns.yang.network.ted.rev130712.*,
+                           org.opendaylight.yang.gen.v1.urn.TBD.params.xml.ns.yang.network.topology.rev130712.*,
+                           org.opendaylight.yang.gen.v1.urn.TBD.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev130712.*,
+                           org.opendaylight.yang.gen.v1.urn.TBD.params.xml.ns.yang.network.isis.topology.rev130712.*,
+                       </Export-Package>
+                   </instructions>
+               </configuration>
+           </plugin>
+               </plugins>
+       </build>
+
+       <distributionManagement>
+               <site>
+                       <id>${project.artifactId}</id>
+                       <name>TOPOLOGY-API Module site</name>
+                       <url>${basedir}/target/site/${project.artifactId}</url>
+               </site>
+       </distributionManagement>
+
+</project>
diff --git a/topology/pom.xml b/topology/pom.xml
new file mode 100644 (file)
index 0000000..c651e72
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: --><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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>protocol-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>topology-parent</artifactId>
+       <description>Topology parent</description>
+       <packaging>pom</packaging>
+       <name>${project.artifactId}</name>
+       
+       <modules>
+               <module>api</module>
+               <module>tunnel-api</module>
+        <module>tunnel-pcep</module>
+        <module>segment-routing</module>
+    </modules>
+</project>
diff --git a/topology/segment-routing/pom.xml b/topology/segment-routing/pom.xml
new file mode 100644 (file)
index 0000000..78fb25b
--- /dev/null
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>topology-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>topology-segment-routing</artifactId>
+       <description>Segment Routing Topology extensions</description>
+       <packaging>bundle</packaging>
+       <name>${project.artifactId}</name>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <dependencies>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>topology-tunnel-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-binding</artifactId>
+            <version>${yang.binding.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+            <version>${yangtools.version}</version>
+        </dependency>
+       </dependencies>
+
+       <build>
+        <plugins>
+           <plugin>
+               <groupId>org.opendaylight.yangtools</groupId>
+               <artifactId>yang-maven-plugin</artifactId>
+               <version>${yangtools.version}</version>
+               <executions>
+                   <execution>
+                       <goals>
+                           <goal>generate-sources</goal>
+                       </goals>
+                       <configuration>
+                           <yangFilesRootDir>src/main/yang</yangFilesRootDir>
+                           <codeGenerators>
+                               <generator>
+                                   <codeGeneratorClass>
+                                       org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+                                   </codeGeneratorClass>
+                                   <outputBaseDir>
+                                       target/generated-sources/sal
+                                   </outputBaseDir>
+                               </generator>
+                           </codeGenerators>
+                           <inspectDependencies>true</inspectDependencies>
+                       </configuration>
+                   </execution>
+               </executions>
+               <dependencies>
+                   <dependency>
+                       <groupId>org.opendaylight.yangtools</groupId>
+                       <artifactId>maven-sal-api-gen-plugin</artifactId>
+                       <version>${yang.binding.version}</version>
+                       <type>jar</type>
+                   </dependency>
+               </dependencies>
+           </plugin>
+           <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>${maven.bundle.version}</version>
+               <extensions>true</extensions>
+               <configuration>
+                   <instructions>
+                       <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+                       <Export-Package>
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819,
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.sr.rev130819,
+                       </Export-Package>
+                   </instructions>
+               </configuration>
+           </plugin>
+               </plugins>
+       </build>
+
+       <distributionManagement>
+               <site>
+                       <id>${project.artifactId}</id>
+                       <name>TOPOLOGY-SEGMENT-ROUTING Module site</name>
+                       <url>${basedir}/target/site/${project.artifactId}</url>
+               </site>
+       </distributionManagement>
+
+</project>
diff --git a/topology/tunnel-api/pom.xml b/topology/tunnel-api/pom.xml
new file mode 100644 (file)
index 0000000..d0ea10b
--- /dev/null
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>topology-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>topology-tunnel-api</artifactId>
+       <description>Topology Tunnel API</description>
+       <packaging>bundle</packaging>
+       <name>${project.artifactId}</name>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <dependencies>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>topology-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-binding</artifactId>
+            <version>${yang.binding.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+            <version>${yangtools.version}</version>
+        </dependency>
+       </dependencies>
+
+       <build>
+        <plugins>
+           <plugin>
+               <groupId>org.opendaylight.yangtools</groupId>
+               <artifactId>yang-maven-plugin</artifactId>
+               <version>${yangtools.version}</version>
+               <executions>
+                   <execution>
+                       <goals>
+                           <goal>generate-sources</goal>
+                       </goals>
+                       <configuration>
+                           <yangFilesRootDir>src/main/yang</yangFilesRootDir>
+                           <codeGenerators>
+                               <generator>
+                                   <codeGeneratorClass>
+                                       org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+                                   </codeGeneratorClass>
+                                   <outputBaseDir>
+                                       target/generated-sources/sal
+                                   </outputBaseDir>
+                               </generator>
+                           </codeGenerators>
+                           <inspectDependencies>true</inspectDependencies>
+                       </configuration>
+                   </execution>
+               </executions>
+               <dependencies>
+                   <dependency>
+                       <groupId>org.opendaylight.yangtools</groupId>
+                       <artifactId>maven-sal-api-gen-plugin</artifactId>
+                       <version>${yang.binding.version}</version>
+                       <type>jar</type>
+                   </dependency>
+               </dependencies>
+           </plugin>
+           <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>${maven.bundle.version}</version>
+               <extensions>true</extensions>
+               <configuration>
+                   <instructions>
+                       <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+                       <Export-Package>
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.rev130819.*,
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.p2p.rev130819.*,
+                       </Export-Package>
+                   </instructions>
+               </configuration>
+           </plugin>
+               </plugins>
+       </build>
+
+       <distributionManagement>
+               <site>
+                       <id>${project.artifactId}</id>
+                       <name>TOPOLOGY-TUNNEL-API Module site</name>
+                       <url>${basedir}/target/site/${project.artifactId}</url>
+               </site>
+       </distributionManagement>
+
+</project>
diff --git a/topology/tunnel-pcep/pom.xml b/topology/tunnel-pcep/pom.xml
new file mode 100644 (file)
index 0000000..e992858
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<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">
+
+       <parent>
+               <groupId>org.opendaylight.bgpcep</groupId>
+               <artifactId>topology-parent</artifactId>
+               <version>0.3.0-SNAPSHOT</version>
+       </parent>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>topology-tunnel-pcep</artifactId>
+       <description>Topology Tunnel PCEP binding</description>
+       <packaging>bundle</packaging>
+       <name>${project.artifactId}</name>
+       <prerequisites>
+               <maven>3.0.4</maven>
+       </prerequisites>
+
+       <dependencies>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>pcep-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>${project.groupId}</groupId>
+                       <artifactId>topology-tunnel-api</artifactId>
+            <version>${project.version}</version>
+               </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-binding</artifactId>
+            <version>${yang.binding.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+            <version>${yangtools.version}</version>
+        </dependency>
+       </dependencies>
+
+       <build>
+        <plugins>
+           <plugin>
+               <groupId>org.opendaylight.yangtools</groupId>
+               <artifactId>yang-maven-plugin</artifactId>
+               <version>${yangtools.version}</version>
+               <executions>
+                   <execution>
+                       <goals>
+                           <goal>generate-sources</goal>
+                       </goals>
+                       <configuration>
+                           <yangFilesRootDir>src/main/yang</yangFilesRootDir>
+                           <codeGenerators>
+                               <generator>
+                                   <codeGeneratorClass>
+                                       org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+                                   </codeGeneratorClass>
+                                   <outputBaseDir>
+                                       target/generated-sources/sal
+                                   </outputBaseDir>
+                               </generator>
+                           </codeGenerators>
+                           <inspectDependencies>true</inspectDependencies>
+                       </configuration>
+                   </execution>
+               </executions>
+               <dependencies>
+                   <dependency>
+                       <groupId>org.opendaylight.yangtools</groupId>
+                       <artifactId>maven-sal-api-gen-plugin</artifactId>
+                       <version>${yang.binding.version}</version>
+                       <type>jar</type>
+                   </dependency>
+               </dependencies>
+           </plugin>
+           <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>${maven.bundle.version}</version>
+               <extensions>true</extensions>
+               <configuration>
+                   <instructions>
+                       <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+                       <Export-Package>
+                           org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev130820,
+                       </Export-Package>
+                   </instructions>
+               </configuration>
+           </plugin>
+               </plugins>
+       </build>
+
+       <distributionManagement>
+               <site>
+                       <id>${project.artifactId}</id>
+                       <name>TOPOLOGY-TUNNEL-PCEP Module site</name>
+                       <url>${basedir}/target/site/${project.artifactId}</url>
+               </site>
+       </distributionManagement>
+
+</project>