Convert PCEP session capabilities to blueprint 53/41853/5
authorTom Pantelis <tpanteli@brocade.com>
Fri, 8 Jul 2016 12:05:27 +0000 (08:05 -0400)
committerMilos Fabian <milfabia@cisco.com>
Thu, 28 Jul 2016 12:14:12 +0000 (12:14 +0000)
Added blueprint XML file, pcep-impl.xml, to the impl bundle that utilizes
the blueprint extension, "specific-reference-list" , to obtain the
specific list of PCEPCapability OSGi service instances.
The specific expected services are announced via
META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability
resources in the provider bundles which the "specific-reference-list"
extension scans so it knows which services to look for. Once all expected
services are obtained, the PCEPCapability instance List bean is created and
injected into the BasePCEPSessionProposalFactory. Also added a yang app
config module and container to retrieve the dead-timer and
keep-alive-timer settings for the BasePCEPSessionProposalFactory.

The 2 PCEPCapability implementations, one in segment-routing and the
other in ietf-stateful07, are now created via new blueprint XML files and
the corresponding config yang and associated Module class were removed.

The PCEPSessionProposalFactoryImplModule was deprecated but still
remains for now to provide the PCEPSessionProposalFactory instance
created via blueprint to the config system so it can be injected into
other users. Once the other user(s) are converted to blueprint then the
config yang, Module classes can be removed.

Change-Id: I6e9aca62d3199abe844b9edc848f6bc3ee5a91fb
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
33 files changed:
artifacts/pom.xml
features/pcep/pom.xml
features/pcep/src/main/features/features.xml
pcep/api/src/main/yang/odl-pcep-api-cfg.yang
pcep/controller-config/pom.xml
pcep/controller-config/src/main/resources/initial/32-pcep.xml
pcep/controller-config/src/main/resources/initial/33-pcep-segment-routing.xml [deleted file]
pcep/ietf-stateful07/src/main/java/org/opendaylight/controller/config/yang/pcep/stateful07/cfg/PCEPStatefulCapabilityModule.java [deleted file]
pcep/ietf-stateful07/src/main/java/org/opendaylight/controller/config/yang/pcep/stateful07/cfg/PCEPStatefulCapabilityModuleFactory.java [deleted file]
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/PCEPStatefulCapability.java
pcep/ietf-stateful07/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability [new file with mode: 0644]
pcep/ietf-stateful07/src/main/resources/org/opendaylight/blueprint/pcep-ietf-stateful.xml
pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07-app-config.yang [new file with mode: 0644]
pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07-cfg.yang [deleted file]
pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPStatefulCapabilityModuleTest.java [deleted file]
pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPStatefulCapabilityTest.java
pcep/impl/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/PCEPSessionProposalFactoryImplModule.java
pcep/impl/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/PCEPSessionProposalFactoryImplModuleFactory.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/BasePCEPSessionProposalFactory.java
pcep/impl/src/main/resources/org/opendaylight/blueprint/pcep-impl.xml [new file with mode: 0644]
pcep/impl/src/main/yang/odl-pcep-impl-cfg.yang
pcep/impl/src/main/yang/pcep-app-config.yang [new file with mode: 0644]
pcep/impl/src/test/java/org/opendaylight/controller/config/yang/pcep/impl/PCEPDispatcherImplModuleTest.java
pcep/impl/src/test/java/org/opendaylight/controller/config/yang/pcep/impl/PCEPSessionProposalFactoryImplModuleTest.java [deleted file]
pcep/segment-routing/src/main/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModule.java [deleted file]
pcep/segment-routing/src/main/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModuleFactory.java [deleted file]
pcep/segment-routing/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability [new file with mode: 0644]
pcep/segment-routing/src/main/resources/org/opendaylight/blueprint/pcep-segment-routing.xml
pcep/segment-routing/src/main/yang/odl-pcep-segment-routing-cfg.yang [deleted file]
pcep/segment-routing/src/main/yang/pcep-segment-routing-app-config.yang
pcep/segment-routing/src/test/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModuleTest.java [deleted file]
pcep/topology-provider/src/test/java/org/opendaylight/controller/config/yang/pcep/topology/provider/PCEPTopologyProviderModuleTest.java
pcep/tunnel-provider/src/test/java/org/opendaylight/controller/config/yang/pcep/tunnel/provider/PCEPTunnelTopologyProviderModuleTest.java

index 480e59bc4cbf99e73e7877f1cbc3beb8e5f08af6..ca2038c4bf175fcfa1cf766f2ffdebd661fdb304 100644 (file)
                 <type>xml</type>
                 <classifier>config-provider</classifier>
             </dependency>
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>pcep-controller-config</artifactId>
-                <version>${project.version}</version>
-                <type>xml</type>
-                <classifier>config-segment</classifier>
-            </dependency>
 
             <dependency>
                 <groupId>${project.groupId}</groupId>
index f2ef24a5632e3c6dabeb8b92578f5a05ffd5706f..c3e443a66689b46068cd1210fa1bddb361472671 100644 (file)
           <type>xml</type>
           <classifier>config</classifier>
       </dependency>
-      <dependency>
-          <groupId>${project.groupId}</groupId>
-          <artifactId>pcep-controller-config</artifactId>
-          <type>xml</type>
-          <classifier>config-segment</classifier>
-      </dependency>
       <dependency>
           <groupId>${project.groupId}</groupId>
           <artifactId>pcep-controller-config</artifactId>
index 2d2128ddfde36e7e1708ff7d71ad21c0966563ad..9fe4e1ed1d9fd0ef00eb14b9b96bd58ddf9271f4 100644 (file)
     <feature name='odl-bgpcep-pcep-segment-routing' version='${project.version}'>
         <feature version='${project.version}'>odl-bgpcep-pcep-stateful07</feature>
         <bundle>mvn:org.opendaylight.bgpcep/pcep-segment-routing/{{VERSION}}</bundle>
-        <configfile finalname="etc/opendaylight/karaf/33-pcep-segment-routing.xml">mvn:org.opendaylight.bgpcep/pcep-controller-config/{{VERSION}}/xml/config-segment</configfile>
     </feature>
 
     <feature name='odl-bgpcep-pcep-auto-bandwidth' version='${project.version}'>
index dd5e2ba888590202adf586c5f71ebe8742f51af2..af8f52e12f36b5089bc7f0c8b63e50a7ff2d233c 100644 (file)
@@ -42,6 +42,7 @@ module odl-pcep-api-cfg {
 
         base "config:service-type";
         config:java-class "org.opendaylight.protocol.pcep.PCEPSessionProposalFactory";
+        config:disable-osgi-service-registration;
     }
 
     identity pcep-capability {
index 7ffc71900f9b7df8725255152d401c1975a5ffe7..d3fdccc74ccd0fd7387462834a263f576ffecf45 100644 (file)
                                     <type>xml</type>
                                     <classifier>config</classifier>
                                 </artifact>
-                                <artifact>
-                                    <file>${project.build.directory}/classes/initial/33-pcep-segment-routing.xml</file>
-                                    <type>xml</type>
-                                    <classifier>config-segment</classifier>
-                                </artifact>
                                 <artifact>
                                     <file>${project.build.directory}/classes/initial/39-pcep-provider.xml</file>
                                     <type>xml</type>
index b581c6700d13322cc62f7d74873c8184e2d5e862..29819505005bf17ef3a82f14e46a589de2c0e20e 100644 (file)
@@ -14,7 +14,6 @@
         <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:impl?module=odl-pcep-impl-cfg&amp;revision=2013-06-27</capability>
         <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:spi?module=odl-pcep-spi-cfg&amp;revision=2013-11-15</capability>
         <capability>urn:opendaylight:params:xml:ns:yang:controller:programming:spi?module=odl-programming-spi-cfg&amp;revision=2013-11-15</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:stateful07:cfg?module=odl-pcep-ietf-stateful07-cfg&amp;revision=2015-07-14</capability>
     </required-capabilities>
     <configuration>
 
                     <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:spi">prefix:pcep-extensions-impl</type>
                     <name>global-pcep-extensions</name>
                 </module>
-                <module>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:stateful07:cfg">prefix:stateful-capability</type>
-                    <name>stateful-capability</name>
-                </module>
                 <module>
                     <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:impl">prefix:pcep-session-proposal-factory-impl</type>
                     <name>global-pcep-session-proposal-factory</name>
-                    <capability>
-                        <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep">prefix:pcep-capability</type>
-                        <name>stateful-capability</name>
-                    </capability>
                 </module>
                 <module>
                     <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:impl">prefix:pcep-dispatcher-impl</type>
                         <provider>/config/modules/module[name='pcep-extensions-impl']/instance[name='global-pcep-extensions']</provider>
                     </instance>
                 </service>
-                <service>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep">prefix:pcep-capability</type>
-                    <instance>
-                        <name>stateful-capability</name>
-                        <provider>/config/modules/module[name='stateful-capability']/instance[name='stateful-capability']</provider>
-                    </instance>
-                </service>
-
                 <service>
                     <type xmlns:pcep="urn:opendaylight:params:xml:ns:yang:controller:pcep">pcep:pcep-dispatcher</type>
                     <instance>
diff --git a/pcep/controller-config/src/main/resources/initial/33-pcep-segment-routing.xml b/pcep/controller-config/src/main/resources/initial/33-pcep-segment-routing.xml
deleted file mode 100644 (file)
index cd1020f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<snapshot>
-    <required-capabilities>
-        <capability>urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&amp;revision=2013-11-19</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:impl?module=odl-pcep-impl-cfg&amp;revision=2013-06-27</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:spi?module=odl-pcep-spi-cfg&amp;revision=2013-11-15</capability>
-       <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:sr:cfg?module=odl-pcep-segment-routing-cfg&amp;revision=2014-06-09</capability>
-    </required-capabilities>
-    <configuration>
-        <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-            <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-                <module>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:sr:cfg">prefix:pcep-segment-routing-capability</type>
-                    <name>pcep-segment-routing-capability</name>
-                </module>
-                <module>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:impl">prefix:pcep-session-proposal-factory-impl</type>
-                    <name>global-pcep-session-proposal-factory</name>
-                    <capability>
-                        <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep">prefix:pcep-capability</type>
-                        <name>pcep-segment-routing-capability</name>
-                    </capability>
-                </module>
-            </modules>
-            <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-                <service>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep">prefix:pcep-capability</type>
-                    <instance>
-                        <name>pcep-segment-routing-capability</name>
-                        <provider>/config/modules/module[name='pcep-segment-routing-capability']/instance[name='pcep-segment-routing-capability']</provider>
-                    </instance>
-                </service>
-           </services>
-        </data>
-    </configuration>
-</snapshot>
\ No newline at end of file
diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/controller/config/yang/pcep/stateful07/cfg/PCEPStatefulCapabilityModule.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/controller/config/yang/pcep/stateful07/cfg/PCEPStatefulCapabilityModule.java
deleted file mode 100644 (file)
index b123edf..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.config.yang.pcep.stateful07.cfg;
-
-import com.google.common.base.Preconditions;
-import java.net.InetSocketAddress;
-import org.opendaylight.protocol.pcep.PCEPCapability;
-import org.opendaylight.protocol.pcep.ietf.stateful07.PCEPStatefulCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
-
-public class PCEPStatefulCapabilityModule extends org.opendaylight.controller.config.yang.pcep.stateful07.cfg.AbstractPCEPStatefulCapabilityModule {
-
-    public PCEPStatefulCapabilityModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
-            final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
-
-    public PCEPStatefulCapabilityModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
-            final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
-            final PCEPStatefulCapabilityModule oldModule, final java.lang.AutoCloseable oldInstance) {
-
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
-
-    @Override
-    protected void customValidation() {
-        if ((getActive() || getTriggeredInitialSync() || getTriggeredResync() || getDeltaLspSyncCapability() || getIncludeDbVersion()) && !getStateful()) {
-            setStateful(true);
-        }
-        if ((getTriggeredInitialSync() || getDeltaLspSyncCapability()) && !getIncludeDbVersion()) {
-            setIncludeDbVersion(true);
-        }
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        final PCEPStatefulCapability capabilityImpl = new PCEPStatefulCapability(getStateful(), getActive(), getInitiated(),
-            getTriggeredInitialSync(), getTriggeredResync(), getDeltaLspSyncCapability(), getIncludeDbVersion());
-        return new PCEPCapabilityImplCloseable(capabilityImpl);
-    }
-
-    private static final class PCEPCapabilityImplCloseable implements PCEPCapability, AutoCloseable {
-        private final PCEPStatefulCapability innerCapabilityImpl;
-        public PCEPCapabilityImplCloseable(final PCEPStatefulCapability capabilityImpl) {
-            this.innerCapabilityImpl = Preconditions.checkNotNull(capabilityImpl);
-        }
-        @Override
-        public void close() {
-        }
-        @Override
-        public void setCapabilityProposal(final InetSocketAddress address, final TlvsBuilder builder) {
-            this.innerCapabilityImpl.setCapabilityProposal(address, builder);
-        }
-    }
-}
diff --git a/pcep/ietf-stateful07/src/main/java/org/opendaylight/controller/config/yang/pcep/stateful07/cfg/PCEPStatefulCapabilityModuleFactory.java b/pcep/ietf-stateful07/src/main/java/org/opendaylight/controller/config/yang/pcep/stateful07/cfg/PCEPStatefulCapabilityModuleFactory.java
deleted file mode 100644 (file)
index 2c53cb5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.config.yang.pcep.stateful07.cfg;
-
-public class PCEPStatefulCapabilityModuleFactory extends AbstractPCEPStatefulCapabilityModuleFactory {
-
-}
index f326b59d49bd5ceb19eab5e0318152fc05799338..da21c2eb68cea9b2eec2d068ba24d5f29eca265b 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.protocol.pcep.ietf.stateful07;
 
 import java.net.InetSocketAddress;
 import org.opendaylight.protocol.pcep.PCEPCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.ietf.stateful07.app.config.rev160707.PcepIetfStateful07Config;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Stateful1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev131126.Stateful1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Tlvs1;
@@ -22,13 +23,18 @@ public class PCEPStatefulCapability implements PCEPCapability {
 
     public PCEPStatefulCapability(final boolean stateful, final boolean active, final boolean instant,
         final boolean triggeredSync, final boolean triggeredResync, final boolean deltaLspSync, final boolean includeDbVersion){
-        this.stateful = stateful;
+        this.stateful = stateful || active || triggeredSync || triggeredResync || deltaLspSync || includeDbVersion;
         this.active = active;
         this.instant = instant;
         this.triggeredSync = triggeredSync;
         this.triggeredResync = triggeredResync;
         this.deltaLspSync = deltaLspSync;
-        this.includeDbVersion = includeDbVersion;
+        this.includeDbVersion = includeDbVersion || triggeredSync || deltaLspSync;
+    }
+
+    public PCEPStatefulCapability(PcepIetfStateful07Config config) {
+        this(config.isStateful(), config.isActive(), config.isInitiated(), config.isTriggeredInitialSync(),
+                config.isTriggeredResync(), config.isDeltaLspSyncCapability(), config.isIncludeDbVersion());
     }
 
     @Override
diff --git a/pcep/ietf-stateful07/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability b/pcep/ietf-stateful07/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability
new file mode 100644 (file)
index 0000000..397e1e7
--- /dev/null
@@ -0,0 +1 @@
+org.opendaylight.protocol.pcep.ietf.stateful07.PCEPStatefulCapability
\ No newline at end of file
index df00c1e6af1b7c873f32b4c3f562a46da1c7acf0..6a352a04943a1df2d914e2bb50f347114c55c584 100644 (file)
@@ -2,6 +2,8 @@
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0">
 
+  <!-- Protocal extension providers -->
+  
   <bean id="ietfStateful07Activator" class="org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator"/>
   <service ref="ietfStateful07Activator" interface="org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator"
           odl:type="org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator"/>
   <bean id="syncOptimizationsActivator" class="org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator"/>
   <service ref="syncOptimizationsActivator" interface="org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator"
           odl:type="org.opendaylight.protocol.pcep.sync.optimizations.SyncOptimizationsActivator"/>
+
+  <!-- Capabilities -->
+
+  <odl:clustered-app-config id="statefulCapabilityConfig"
+      binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.ietf.stateful07.app.config.rev160707.PcepIetfStateful07Config"/>
+
+  <bean id="statefulCapability" class="org.opendaylight.protocol.pcep.ietf.stateful07.PCEPStatefulCapability">
+    <argument ref="statefulCapabilityConfig"/>
+  </bean>
+
+  <service ref="statefulCapability" interface="org.opendaylight.protocol.pcep.PCEPCapability"
+          odl:type="org.opendaylight.protocol.pcep.ietf.stateful07.PCEPStatefulCapability"/>
+          
 </blueprint>
\ No newline at end of file
diff --git a/pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07-app-config.yang b/pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07-app-config.yang
new file mode 100644 (file)
index 0000000..ebfe3d8
--- /dev/null
@@ -0,0 +1,54 @@
+module pcep-ietf-stateful07-app-config {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:pcep:ietf-stateful07-app-config";
+    prefix "pcep-ietf-stateful07-app-config";
+
+    description
+      "Configuration for the PCEP IETF stateful07 extension.";
+
+    revision "2016-07-07" {
+        description
+            "Initial revision.";
+    }
+
+    grouping stateful-capabilities {
+        leaf initiated {
+            type boolean;
+            default true;
+        }
+
+        leaf stateful {
+            type boolean;
+            default true;
+        }
+
+        leaf active {
+            type boolean;
+            default true;
+        }
+
+        leaf triggered-initial-sync {
+            type boolean;
+            default true;
+        }
+
+        leaf delta-lsp-sync-capability {
+            type boolean;
+            default true;
+        }
+
+        leaf triggered-resync {
+            type boolean;
+            default true;
+        }
+
+        leaf include-db-version {
+            type boolean;
+            default true;
+        }
+    }
+
+    container pcep-ietf-stateful07-config {
+        uses stateful-capabilities;
+    }
+}
\ No newline at end of file
diff --git a/pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07-cfg.yang b/pcep/ietf-stateful07/src/main/yang/odl-pcep-ietf-stateful07-cfg.yang
deleted file mode 100644 (file)
index 8088bfb..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-// vi: set smarttab et sw=4 tabstop=4:
-module odl-pcep-ietf-stateful07-cfg {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:pcep:stateful07:cfg";
-    prefix "pcep-stateful07";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import odl-pcep-api-cfg { prefix pcep; revision-date 2013-04-09; }
-    import odl-pcep-spi-cfg { prefix spi; revision-date 2013-11-15; }
-
-    organization "Cisco Systems, Inc.";
-
-    contact "Robert Varga <rovarga@cisco.com>";
-
-    description
-        "This module contains the base YANG definitions for
-         draft-ietf-pce-stateful-pce-07 extensions.
-
-        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 "2015-07-14" {
-        description
-            "Extended stateful capabilities.";
-    }
-
-    revision "2014-02-21" {
-        description
-            "Updated revision dates for imports.";
-    }
-
-    identity stateful-capability {
-        base config:module-type;
-        config:java-name-prefix "PCEPStatefulCapability";
-        config:provided-service pcep:pcep-capability;
-    }
-
-    grouping stateful-capabilities {
-        leaf dead-timer-value {
-            type uint8;
-            default 120;
-        }
-
-        leaf keep-alive-timer-value {
-            type uint8;
-            default 30;
-        }
-
-        leaf initiated {
-            type boolean;
-            default true;
-        }
-
-        leaf stateful {
-            type boolean;
-            default true;
-        }
-
-        leaf active {
-            type boolean;
-            default true;
-        }
-
-        leaf triggered-initial-sync {
-            type boolean;
-            default true;
-        }
-
-        leaf delta-lsp-sync-capability {
-            type boolean;
-            default true;
-        }
-
-        leaf triggered-resync {
-            type boolean;
-            default true;
-        }
-
-        leaf include-db-version {
-            type boolean;
-            default true;
-        }
-    }
-
-    augment "/config:modules/config:module/config:configuration" {
-        case stateful-capability {
-            when "/config:modules/config:module/config:type = 'stateful-capability'";
-            uses stateful-capabilities;
-        }
-    }
-}
-
diff --git a/pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPStatefulCapabilityModuleTest.java b/pcep/ietf-stateful07/src/test/java/org/opendaylight/protocol/pcep/ietf/PCEPStatefulCapabilityModuleTest.java
deleted file mode 100644 (file)
index ae29374..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.protocol.pcep.ietf;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.ObjectName;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.config.api.jmx.CommitStatus;
-import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
-import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
-import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
-import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.PCEPStatefulCapabilityModuleFactory;
-import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.PCEPStatefulCapabilityModuleMXBean;
-
-public class PCEPStatefulCapabilityModuleTest extends AbstractConfigTest {
-
-    private static final String INSTANCE_NAME = "stateful-capability";
-    private static final String FACTORY_NAME = PCEPStatefulCapabilityModuleFactory.NAME;
-
-    @Before
-    public void setUp() throws Exception {
-        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new PCEPStatefulCapabilityModuleFactory()));
-    }
-
-    @Test
-    public void testStatefulAfterCommitted() throws Exception {
-        createInstance(false, true, true, true, false, true, true);
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        final PCEPStatefulCapabilityModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(
-                FACTORY_NAME, INSTANCE_NAME), PCEPStatefulCapabilityModuleMXBean.class);
-        assertTrue(mxBean.getStateful());
-    }
-
-    @Test
-    public void testNotStatefulAfterCommitted() throws Exception {
-        createInstance(false, false, false, false, false, false, false);
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        final PCEPStatefulCapabilityModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(
-                FACTORY_NAME, INSTANCE_NAME), PCEPStatefulCapabilityModuleMXBean.class);
-        assertFalse(mxBean.getStateful());
-    }
-
-    @Test
-    public void testIncludeDbVersionAfterCommitted() throws Exception {
-        createInstance(false, false, false, false, false, true, false);
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        final PCEPStatefulCapabilityModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(
-                FACTORY_NAME, INSTANCE_NAME), PCEPStatefulCapabilityModuleMXBean.class);
-        assertTrue(mxBean.getIncludeDbVersion());
-    }
-
-    @Test
-    public void testNotIncludeDbVersionAfterCommitted() throws Exception {
-        createInstance(false, false, false, false, false, false, false);
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        final PCEPStatefulCapabilityModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(
-                FACTORY_NAME, INSTANCE_NAME), PCEPStatefulCapabilityModuleMXBean.class);
-        assertFalse(mxBean.getIncludeDbVersion());
-    }
-
-    @Test
-    public void testCreateBean() throws Exception {
-        final CommitStatus status = createInstance();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 1, 0, 0);
-    }
-
-    @Test
-    public void testReusingOldInstance() throws Exception {
-        createInstance();
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        assertBeanCount(1, FACTORY_NAME);
-        final CommitStatus status = transaction.commit();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 1);
-    }
-
-    @Test
-    public void testReconfigure() throws Exception {
-        createInstance();
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        assertBeanCount(1, FACTORY_NAME);
-        transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME),
-            PCEPStatefulCapabilityModuleMXBean.class);
-        final CommitStatus status = transaction.commit();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 1);
-    }
-
-    private CommitStatus createInstance(final Boolean stateful, final Boolean active, final Boolean instant,
-        final Boolean triggeredInitialSync, final Boolean triggeredResync, final Boolean deltaLspSyncCapability,
-        final Boolean includeDbVersion) throws Exception {
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        createInstance(transaction, stateful, active, instant, triggeredInitialSync, triggeredResync, deltaLspSyncCapability, includeDbVersion);
-        return transaction.commit();
-    }
-
-    private CommitStatus createInstance() throws Exception {
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        createPCEPCapabilityInstance(transaction);
-        return transaction.commit();
-    }
-
-    public static ObjectName createPCEPCapabilityInstance(final ConfigTransactionJMXClient transaction) throws Exception {
-        return createInstance(transaction, true, true, true, true, true, true, true);
-    }
-
-    private static ObjectName createInstance(final ConfigTransactionJMXClient transaction, final Boolean stateful, final Boolean active, final Boolean instant,
-            final Boolean triggeredInitialSync, final Boolean triggeredResync, final Boolean deltaLspSyncCapability, final Boolean includeDbVersion) throws InstanceAlreadyExistsException {
-        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
-        final PCEPStatefulCapabilityModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated,
-            PCEPStatefulCapabilityModuleMXBean.class);
-        mxBean.setActive(active);
-        mxBean.setInitiated(instant);
-        mxBean.setStateful(stateful);
-        mxBean.setTriggeredInitialSync(triggeredInitialSync);
-        mxBean.setTriggeredResync(triggeredResync);
-        mxBean.setDeltaLspSyncCapability(deltaLspSyncCapability);
-        mxBean.setIncludeDbVersion(includeDbVersion);
-        return nameCreated;
-    }
-}
index 197d1adc6522f79f6c79f8a3480ec1ee3a1078a7..b0a7997b7175db87801a0e65a41a98a6af659c9f 100644 (file)
@@ -29,7 +29,7 @@ public class PCEPStatefulCapabilityTest {
                         .setTriggeredInitialSync(true)
                         .setTriggeredResync(false)
                         .setDeltaLspSyncCapability(true)
-                        .setIncludeDbVersion(false)
+                        .setIncludeDbVersion(true)
                         .build())
                     .build())
                 .build())
@@ -44,7 +44,7 @@ public class PCEPStatefulCapabilityTest {
         Assert.assertFalse(sspf.isTriggeredResync());
         Assert.assertTrue(sspf.isTriggeredSync());
         Assert.assertTrue(sspf.isDeltaLspSync());
-        Assert.assertFalse(sspf.isIncludeDbVersion());
+        Assert.assertTrue(sspf.isIncludeDbVersion());
         final TlvsBuilder builder = new TlvsBuilder();
         sspf.setCapabilityProposal(null, builder);
         Assert.assertEquals(EXPECTED_TLVS, builder.build());
index 7fa261908ccacc1e86dd8b2b48910d4979710907..3be15a3f72b006240dd0c7b9a38534706d5ad2ff 100644 (file)
  */
 package org.opendaylight.controller.config.yang.pcep.impl;
 
-import java.net.InetSocketAddress;
-import org.opendaylight.controller.config.api.JmxAttributeValidationException;
-import org.opendaylight.protocol.pcep.PCEPPeerProposal;
+import com.google.common.reflect.AbstractInvocationHandler;
+import com.google.common.reflect.Reflection;
+import java.lang.reflect.Method;
+import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
 import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
-import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.osgi.framework.BundleContext;
 
 /**
- *
+ * @deprecated Replaced by blueprint wiring
  */
-public final class PCEPSessionProposalFactoryImplModule extends
-        org.opendaylight.controller.config.yang.pcep.impl.AbstractPCEPSessionProposalFactoryImplModule {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PCEPSessionProposalFactoryImplModule.class);
-
-    private static final int KA_TO_DEADTIMER_RATIO = 4;
+@Deprecated
+public final class PCEPSessionProposalFactoryImplModule extends AbstractPCEPSessionProposalFactoryImplModule {
+    private BundleContext bundleContext;
 
     public PCEPSessionProposalFactoryImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier name,
             final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
@@ -47,46 +42,28 @@ public final class PCEPSessionProposalFactoryImplModule extends
     }
 
     @Override
-    public void customValidation() {
-        JmxAttributeValidationException.checkNotNull(getDeadTimerValue(), "value is not set.", deadTimerValueJmxAttribute);
-        JmxAttributeValidationException.checkNotNull(getKeepAliveTimerValue(), "value is not set.", keepAliveTimerValueJmxAttribute);
-        if (getKeepAliveTimerValue() != 0) {
-            JmxAttributeValidationException.checkCondition(getKeepAliveTimerValue() >= 1, "minimum value is 1.",
-                    keepAliveTimerValueJmxAttribute);
-            if (getDeadTimerValue() != 0 && (getDeadTimerValue() / getKeepAliveTimerValue() != KA_TO_DEADTIMER_RATIO)) {
-                LOG.warn("DeadTimerValue should be 4 times greater than KeepAliveTimerValue");
+    public java.lang.AutoCloseable createInstance() {
+        final WaitingServiceTracker<PCEPSessionProposalFactory> tracker =
+                WaitingServiceTracker.create(PCEPSessionProposalFactory.class, bundleContext);
+        final PCEPSessionProposalFactory service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES);
+
+        return Reflection.newProxy(AutoCloseablePCEPSessionProposalFactory.class, new AbstractInvocationHandler() {
+            @Override
+            protected Object handleInvocation(Object proxy, Method method, Object[] args) throws Throwable {
+                if (method.getName().equals("close")) {
+                    tracker.close();
+                    return null;
+                } else {
+                    return method.invoke(service, args);
+                }
             }
-        }
+        });
     }
 
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        final BasePCEPSessionProposalFactory inner = new BasePCEPSessionProposalFactory(getDeadTimerValue(), getKeepAliveTimerValue(), getCapabilityDependency());
-        return new PCEPSessionProposalFactoryCloseable(inner);
+    void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
     }
 
-    private static final class PCEPSessionProposalFactoryCloseable implements PCEPSessionProposalFactory, AutoCloseable {
-
-        private final BasePCEPSessionProposalFactory inner;
-
-        public PCEPSessionProposalFactoryCloseable(final BasePCEPSessionProposalFactory inner) {
-            this.inner = inner;
-        }
-
-        @Override
-        public void close() {
-            // Nothing to do
-        }
-
-        @Override
-        public Open getSessionProposal(final InetSocketAddress inetSocketAddress, final int i) {
-            return this.inner.getSessionProposal(inetSocketAddress, i);
-        }
-
-        @Override
-        public Open getSessionProposal(final InetSocketAddress address,
-                final int sessionId, final PCEPPeerProposal peerProposal) {
-            return this.inner.getSessionProposal(address, sessionId, peerProposal);
-        }
+    private static interface AutoCloseablePCEPSessionProposalFactory extends PCEPSessionProposalFactory, AutoCloseable {
     }
 }
index fef911e7b0111ff252afc16fc6ba753ff56384f1..5a7d65d69cb7c954f084350deaaa0a3a9ee510cc 100644 (file)
  */
 package org.opendaylight.controller.config.yang.pcep.impl;
 
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
 /**
-*
-*/
-public class PCEPSessionProposalFactoryImplModuleFactory extends
-        org.opendaylight.controller.config.yang.pcep.impl.AbstractPCEPSessionProposalFactoryImplModuleFactory {
+ * @deprecated Replaced by blueprint wiring
+ */
+@Deprecated
+public class PCEPSessionProposalFactoryImplModuleFactory extends AbstractPCEPSessionProposalFactoryImplModuleFactory {
+    @Override
+    public PCEPSessionProposalFactoryImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            PCEPSessionProposalFactoryImplModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) {
+        PCEPSessionProposalFactoryImplModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule,
+                oldInstance, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
 
+    @Override
+    public PCEPSessionProposalFactoryImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+            BundleContext bundleContext) {
+        PCEPSessionProposalFactoryImplModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
 }
index 4efe496dab4f202166713e2cbe41276ef5ac8b3b..415944b1386357d07b8fc4476e4f130c366e8d1c 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.protocol.pcep.impl;
 
+import com.google.common.base.Preconditions;
 import java.net.InetSocketAddress;
 import java.util.List;
 import org.opendaylight.protocol.pcep.PCEPCapability;
@@ -15,13 +16,24 @@ import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public final class BasePCEPSessionProposalFactory implements PCEPSessionProposalFactory {
+    private static final Logger LOG = LoggerFactory.getLogger(BasePCEPSessionProposalFactory.class);
+    private static final int KA_TO_DEADTIMER_RATIO = 4;
 
     private final int keepAlive, deadTimer;
     private final List<PCEPCapability> capabilities;
 
     public BasePCEPSessionProposalFactory(final int deadTimer, final int keepAlive, final List<PCEPCapability> capabilities) {
+        if(keepAlive != 0) {
+            Preconditions.checkArgument(keepAlive >= 1, "Minimum value for keep-alive-timer-value is 1");
+            if(deadTimer != 0 && (deadTimer / keepAlive != KA_TO_DEADTIMER_RATIO)) {
+                LOG.warn("dead-timer-value should be {} times greater than keep-alive-timer-value", KA_TO_DEADTIMER_RATIO);
+            }
+        }
+
         this.deadTimer = deadTimer;
         this.keepAlive = keepAlive;
         this.capabilities = capabilities;
diff --git a/pcep/impl/src/main/resources/org/opendaylight/blueprint/pcep-impl.xml b/pcep/impl/src/main/resources/org/opendaylight/blueprint/pcep-impl.xml
new file mode 100644 (file)
index 0000000..6af29bb
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0">
+
+  <!-- Obtains the specific list of PCEPCapability OSGi services announced via
+       META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability resources.
+  -->
+  <odl:specific-reference-list id="pcepCapabilities" interface="org.opendaylight.protocol.pcep.PCEPCapability"/>
+
+  <odl:clustered-app-config id="pcepSessionConfig"
+      binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.app.config.rev160707.PcepSessionConfig"/>
+
+  <bean id="sessionProposalFactory" class="org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory">
+    <argument>
+      <bean factory-ref="pcepSessionConfig" factory-method="getDeadTimerValue"/>
+    </argument>
+    <argument>
+      <bean factory-ref="pcepSessionConfig" factory-method="getKeepAliveTimerValue"/>
+    </argument>
+    <argument ref="pcepCapabilities"/>
+  </bean>
+
+  <service ref="sessionProposalFactory" interface="org.opendaylight.protocol.pcep.PCEPSessionProposalFactory"/>
+</blueprint>
\ No newline at end of file
index 93dd1860f7e99b21f00f7e3a61ff78bf342cc8d0..9e69deaf07435c81fba7b75bbb0eb6a1d67545e8 100644 (file)
@@ -158,25 +158,6 @@ module odl-pcep-impl-cfg {
     augment "/config:modules/config:module/config:configuration" {
         case pcep-session-proposal-factory-impl {
             when "/config:modules/config:module/config:type = 'pcep-session-proposal-factory-impl'";
-
-            leaf dead-timer-value {
-                type uint8;
-                default 120;
-            }
-
-            leaf keep-alive-timer-value {
-                type uint8;
-                default 30;
-            }
-
-            list capability {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity pcep:pcep-capability;
-                    }
-                }
-            }
         }
     }
 }
diff --git a/pcep/impl/src/main/yang/pcep-app-config.yang b/pcep/impl/src/main/yang/pcep-app-config.yang
new file mode 100644 (file)
index 0000000..e5b7f57
--- /dev/null
@@ -0,0 +1,25 @@
+module pcep-app-config {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:pcep:app-config";
+    prefix "pcep-app-config";
+
+    description
+      "Configuration for the PCEP implementation.";
+
+    revision "2016-07-07" {
+        description
+            "Initial revision.";
+    }
+
+    container pcep-session-config {
+        leaf dead-timer-value {
+            type uint16;
+            default 120;
+        }
+
+        leaf keep-alive-timer-value {
+            type uint16;
+            default 30;
+        }
+    }
+}
\ No newline at end of file
index e97a0fc5df28d630e70cd5400cc106192ad22a67..933005084c95e0ac1fbaf8788ba2b93559c23e0b 100644 (file)
@@ -17,6 +17,7 @@ import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import io.netty.channel.EventLoopGroup;
+import java.util.Collections;
 import javax.management.InstanceAlreadyExistsException;
 import javax.management.ObjectName;
 import org.junit.Before;
@@ -32,6 +33,8 @@ import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgrou
 import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean;
 import org.opendaylight.controller.config.yang.pcep.spi.SimplePCEPExtensionProviderContextModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.spi.SimplePCEPExtensionProviderContextModuleMXBean;
+import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
+import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
 import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.impl.rev130627.PathType;
@@ -73,6 +76,8 @@ public class PCEPDispatcherImplModuleTest extends AbstractConfigTest {
 
         setupMockService(EventLoopGroup.class, mock(EventLoopGroup.class));
         setupMockService(PCEPExtensionProviderContext.class, new SimplePCEPExtensionProviderContext());
+        setupMockService(PCEPSessionProposalFactory.class, new BasePCEPSessionProposalFactory(120, 30,
+                Collections.emptyList()));
     }
 
     private void setupMockService(final Class<?> serviceInterface, final Object instance) throws Exception {
@@ -257,7 +262,7 @@ public class PCEPDispatcherImplModuleTest extends AbstractConfigTest {
             throws Exception {
         final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
         final PCEPDispatcherImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, PCEPDispatcherImplModuleMXBean.class);
-        mxBean.setPcepSessionProposalFactory(PCEPSessionProposalFactoryImplModuleTest.createSessionInstance(transaction));
+        mxBean.setPcepSessionProposalFactory(createSessionProposalFactoryInstance(transaction));
         mxBean.setMaxUnknownMessages(maxUnknownMessages);
         mxBean.setBossGroup(createThreadGroupInstance(transaction, 10, BOSS_TG_INSTANCE_NAME));
         mxBean.setWorkerGroup(createThreadGroupInstance(transaction, 10, WORKER_TG_INSTANCE_NAME));
@@ -265,6 +270,14 @@ public class PCEPDispatcherImplModuleTest extends AbstractConfigTest {
         return nameCreated;
     }
 
+    private static ObjectName createSessionProposalFactoryInstance(final ConfigTransactionJMXClient transaction)
+            throws InstanceAlreadyExistsException {
+        final ObjectName nameCreated = transaction.createModule(PCEPSessionProposalFactoryImplModuleFactory.NAME,
+                "pcep-session-proposal-factory-impl");
+        transaction.newMXBeanProxy(nameCreated, PCEPSessionProposalFactoryImplModuleMXBean.class);
+        return nameCreated;
+    }
+
     private static ObjectName createDispatcherInstance(final ConfigTransactionJMXClient transaction, final Integer maxUnknownMessages,
             final Tls tls) throws Exception {
         final ObjectName objName = createDispatcherInstance(transaction, maxUnknownMessages);
diff --git a/pcep/impl/src/test/java/org/opendaylight/controller/config/yang/pcep/impl/PCEPSessionProposalFactoryImplModuleTest.java b/pcep/impl/src/test/java/org/opendaylight/controller/config/yang/pcep/impl/PCEPSessionProposalFactoryImplModuleTest.java
deleted file mode 100644 (file)
index b7f8f93..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.config.yang.pcep.impl;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.ObjectName;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.config.api.ValidationException;
-import org.opendaylight.controller.config.api.jmx.CommitStatus;
-import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
-import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
-import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
-
-public class PCEPSessionProposalFactoryImplModuleTest extends AbstractConfigTest {
-
-    private static final String INSTANCE_NAME = "pcep-session-proposal-factory-impl";
-    private static final String FACTORY_NAME = PCEPSessionProposalFactoryImplModuleFactory.NAME;
-
-    @Before
-    public void setUp() throws Exception {
-        final PCEPSessionProposalFactoryImplModuleFactory factory = new PCEPSessionProposalFactoryImplModuleFactory();
-        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, factory));
-    }
-
-    @Test
-    public void testValidationExceptionDeadTimerValueNotSet() throws Exception {
-        try {
-            createSessionInstance(null, (short) 100);
-            fail();
-        } catch (final ValidationException e) {
-            assertTrue(e.getMessage().contains("DeadTimerValue value is not set"));
-        }
-    }
-
-    @Test
-    public void testValidationExceptionKeepAliveTimerNotSet() throws Exception {
-        try {
-            createSessionInstance((short) 200, null);
-            fail();
-        } catch (final ValidationException e) {
-            assertTrue(e.getMessage().contains("KeepAliveTimerValue value is not set"));
-        }
-    }
-
-    @Test
-    public void testValidationExceptionKeepAliveTimerMinValue() throws Exception {
-        try {
-            createSessionInstance((short) 200, (short) -10);
-            fail();
-        } catch (final ValidationException e) {
-            assertTrue(e.getMessage().contains("minimum value is 1."));
-        }
-    }
-
-    @Test
-    public void testCreateBean() throws Exception {
-        final CommitStatus status = createInstance();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 1, 0, 0);
-    }
-
-    @Test
-    public void testReusingOldInstance() throws Exception {
-        createInstance();
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        assertBeanCount(1, FACTORY_NAME);
-        final CommitStatus status = transaction.commit();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 1);
-    }
-
-    @Test
-    public void testReconfigure() throws Exception {
-        createInstance();
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        assertBeanCount(1, FACTORY_NAME);
-        PCEPSessionProposalFactoryImplModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME,
-                INSTANCE_NAME), PCEPSessionProposalFactoryImplModuleMXBean.class);
-        mxBean.setKeepAliveTimerValue((short) 180);
-        final CommitStatus status = transaction.commit();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 1, 0);
-    }
-
-    private CommitStatus createInstance() throws Exception {
-        return createSessionInstance((short) 200, (short) 100);
-    }
-
-    private CommitStatus createSessionInstance(final Short deadTimer, final Short keepAlive) throws Exception {
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        createSessionInstance(transaction, deadTimer, keepAlive);
-        return transaction.commit();
-    }
-
-    private static ObjectName createSessionInstance(final ConfigTransactionJMXClient transaction, final Short deadTimer,
-            final Short keepAlive) throws InstanceAlreadyExistsException {
-        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
-        final PCEPSessionProposalFactoryImplModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated,
-                PCEPSessionProposalFactoryImplModuleMXBean.class);
-        mxBean.setDeadTimerValue(deadTimer);
-        mxBean.setKeepAliveTimerValue(keepAlive);
-        return nameCreated;
-    }
-
-    public static ObjectName createSessionInstance(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException {
-        return createSessionInstance(transaction, (short) 180, (short) 30);
-    }
-}
diff --git a/pcep/segment-routing/src/main/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModule.java b/pcep/segment-routing/src/main/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModule.java
deleted file mode 100644 (file)
index 91b634e..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.config.yang.pcep.sr.cfg;
-
-import com.google.common.base.Preconditions;
-import java.net.InetSocketAddress;
-import org.opendaylight.protocol.pcep.PCEPCapability;
-import org.opendaylight.protocol.pcep.segment.routing.PCEPSegmentRoutingCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.open.TlvsBuilder;
-
-public class PCEPSegmentRoutingCapabilityModule extends org.opendaylight.controller.config.yang.pcep.sr.cfg.AbstractPCEPSegmentRoutingCapabilityModule {
-
-    public PCEPSegmentRoutingCapabilityModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
-
-    public PCEPSegmentRoutingCapabilityModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final org.opendaylight.controller.config.yang.pcep.sr.cfg.PCEPSegmentRoutingCapabilityModule oldModule, final java.lang.AutoCloseable oldInstance) {
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        final PCEPSegmentRoutingCapability inner = new PCEPSegmentRoutingCapability(getSrCapable());
-        return new PCEPSegmentRoutingCapabilityCloseable(inner);
-    }
-
-    private static final class PCEPSegmentRoutingCapabilityCloseable implements PCEPCapability, AutoCloseable {
-        private final PCEPSegmentRoutingCapability inner;
-
-        public PCEPSegmentRoutingCapabilityCloseable(final PCEPSegmentRoutingCapability inner) {
-            this.inner = Preconditions.checkNotNull(inner);
-        }
-
-        @Override
-        public void close() {
-        }
-
-        @Override
-        public void setCapabilityProposal(final InetSocketAddress address, final TlvsBuilder builder) {
-            this.inner.setCapabilityProposal(address, builder);
-        }
-
-    }
-
-}
diff --git a/pcep/segment-routing/src/main/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModuleFactory.java b/pcep/segment-routing/src/main/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModuleFactory.java
deleted file mode 100644 (file)
index a536243..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.config.yang.pcep.sr.cfg;
-public class PCEPSegmentRoutingCapabilityModuleFactory extends org.opendaylight.controller.config.yang.pcep.sr.cfg.AbstractPCEPSegmentRoutingCapabilityModuleFactory {
-
-}
diff --git a/pcep/segment-routing/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability b/pcep/segment-routing/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.PCEPCapability
new file mode 100644 (file)
index 0000000..26798a0
--- /dev/null
@@ -0,0 +1 @@
+org.opendaylight.protocol.pcep.segment.routing.PCEPSegmentRoutingCapability
\ No newline at end of file
index 29f7aa25ba8c407e56c6f9bbb673bb05691c0ee7..5cb4893d1606364a32196afc55fe2c8901350ab1 100644 (file)
@@ -2,15 +2,28 @@
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0">
 
-  <odl:clustered-app-config id="segmentRoutingAppConfig"
-      binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.segment.routing.app.config.rev160707.PcepSegmentRoutingAppConfig"/>
+  <odl:clustered-app-config id="segmentRoutingConfig"
+      binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.segment.routing.app.config.rev160707.PcepSegmentRoutingConfig"/>
+
+  <!-- Protocal extension provider -->
 
   <bean id="segmentRoutingActivator" class="org.opendaylight.protocol.pcep.segment.routing.SegmentRoutingActivator">
     <argument>
-      <bean factory-ref="segmentRoutingAppConfig" factory-method="isIanaSrSubobjectsType"/>
+      <bean factory-ref="segmentRoutingConfig" factory-method="isIanaSrSubobjectsType"/>
     </argument>
   </bean>
 
   <service ref="segmentRoutingActivator" interface="org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator"
           odl:type="org.opendaylight.protocol.pcep.segment.routing.SegmentRoutingActivator"/>
+
+  <!-- Capabilities -->
+
+  <bean id="segmentRoutingCapability" class="org.opendaylight.protocol.pcep.segment.routing.PCEPSegmentRoutingCapability">
+    <argument>
+      <bean factory-ref="segmentRoutingConfig" factory-method="isSrCapable"/>
+    </argument>
+  </bean>
+
+  <service ref="segmentRoutingCapability" interface="org.opendaylight.protocol.pcep.PCEPCapability"
+          odl:type="org.opendaylight.protocol.pcep.segment.routing.PCEPSegmentRoutingCapability"/>
 </blueprint>
\ No newline at end of file
diff --git a/pcep/segment-routing/src/main/yang/odl-pcep-segment-routing-cfg.yang b/pcep/segment-routing/src/main/yang/odl-pcep-segment-routing-cfg.yang
deleted file mode 100644 (file)
index 6e2e3f5..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// vi: set smarttab et sw=4 tabstop=4:
-module odl-pcep-segment-routing-cfg {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:pcep:sr:cfg";
-    prefix "pcep-sr";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import odl-pcep-api-cfg { prefix pcep; revision-date 2013-04-09; }
-    import odl-pcep-spi-cfg { prefix spi; revision-date 2013-11-15; }
-    import odl-pcep-ietf-stateful07-cfg { prefix pcep-stateful07; revision-date 2015-07-14; }
-
-    organization "Cisco Systems, Inc.";
-
-    contact "Milos Fabian <milfabia@cisco.com>";
-
-    description
-        "This module contains the data model of PCEP Extensions for Segment Routing,
-        draft-ietf-pce-segment-routing-00.
-
-        Copyright (c)2014 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 "2014-06-09" {
-        description
-            "Initial revision.";
-    }
-
-    identity pcep-segment-routing-capability {
-        base config:module-type;
-        config:java-name-prefix "PCEPSegmentRoutingCapability";
-        config:provided-service pcep:pcep-capability;
-    }
-
-    augment "/config:modules/config:module/config:configuration" {
-        case pcep-segment-routing-capability {
-            when "/config:modules/config:module/config:type = 'pcep-segment-routing-capability'";
-            uses pcep-stateful07:stateful-capabilities;
-            leaf sr-capable {
-                type boolean;
-                default true;
-            }
-        }
-    }
-}
-
index 6330cf06b13355eba9862ce0441b45dacd5ca419..0219751515157ffc45b333000a4aee8e2224c243 100644 (file)
@@ -11,12 +11,17 @@ module pcep-segment-routing-app-config {
             "Initial revision.";
     }
 
-    container pcep-segment-routing-app-config {
+    container pcep-segment-routing-config {
         leaf iana-sr-subobjects-type {
             description "If false (default) SR-ERO type (=5) and SR-RRO type (=6) is used,
                     else proposed type (36) is used for parsing/serialization";
             type boolean;
             default false;
         }
+
+        leaf sr-capable {
+            type boolean;
+            default true;
+        }
     }
 }
\ No newline at end of file
diff --git a/pcep/segment-routing/src/test/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModuleTest.java b/pcep/segment-routing/src/test/java/org/opendaylight/controller/config/yang/pcep/sr/cfg/PCEPSegmentRoutingCapabilityModuleTest.java
deleted file mode 100644 (file)
index 6e80842..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.config.yang.pcep.sr.cfg;
-
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.ObjectName;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.config.api.jmx.CommitStatus;
-import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
-import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
-import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
-
-public class PCEPSegmentRoutingCapabilityModuleTest extends AbstractConfigTest {
-
-    private static final String INSTANCE_NAME = "sr02-session-proposal";
-    private static final String FACTORY_NAME = PCEPSegmentRoutingCapabilityModuleFactory.NAME;
-
-    @Before
-    public void setUp() throws Exception {
-        super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new PCEPSegmentRoutingCapabilityModuleFactory()));
-    }
-
-    @Test
-    public void testCreateBean() throws Exception {
-        final CommitStatus status = createInstance();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 1, 0, 0);
-    }
-
-    @Test
-    public void testReusingOldInstance() throws Exception {
-        createInstance();
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        assertBeanCount(1, FACTORY_NAME);
-        final CommitStatus status = transaction.commit();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 1);
-    }
-
-    @Test
-    public void testReconfigure() throws Exception {
-        createInstance();
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        assertBeanCount(1, FACTORY_NAME);
-        transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), PCEPSegmentRoutingCapabilityModuleMXBean.class);
-        final CommitStatus status = transaction.commit();
-        assertBeanCount(1, FACTORY_NAME);
-        assertStatus(status, 0, 0, 1);
-    }
-
-    private CommitStatus createInstance() throws Exception {
-        return createInstance(true);
-    }
-
-    private CommitStatus createInstance(final Boolean srCapable) throws Exception {
-        final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction();
-        createInstance(transaction, srCapable);
-        return transaction.commit();
-    }
-
-    private ObjectName createInstance(final ConfigTransactionJMXClient transaction, final Boolean srCapable) throws InstanceAlreadyExistsException {
-        final ObjectName nameCreated = transaction.createModule(FACTORY_NAME, INSTANCE_NAME);
-        final PCEPSegmentRoutingCapabilityModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, PCEPSegmentRoutingCapabilityModuleMXBean.class);
-        mxBean.setSrCapable(srCapable);
-        return nameCreated;
-    }
-}
index 1dcddd13e5f4971dfff5b141e7ecb03fcba486e1..b66856d6a9f11314558168f04b61b2e584f538cf 100644 (file)
@@ -11,6 +11,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.opendaylight.controller.config.yang.pcep.impl.PCEPDispatcherImplModuleTest.createDispatcherInstance;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 import javax.management.ObjectName;
@@ -24,8 +25,9 @@ import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgrou
 import org.opendaylight.controller.config.yang.pcep.impl.PCEPDispatcherImplModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.impl.PCEPSessionProposalFactoryImplModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.spi.SimplePCEPExtensionProviderContextModuleFactory;
-import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.PCEPStatefulCapabilityModuleFactory;
 import org.opendaylight.controller.config.yang.programming.impl.AbstractInstructionSchedulerTest;
+import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
+import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
 import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
@@ -49,6 +51,8 @@ public class PCEPTopologyProviderModuleTest extends AbstractInstructionScheduler
         super.setUp();
 
         setupMockService(PCEPExtensionProviderContext.class, new SimplePCEPExtensionProviderContext());
+        setupMockService(PCEPSessionProposalFactory.class, new BasePCEPSessionProposalFactory(120, 30,
+                Collections.emptyList()));
     }
 
     @Test
@@ -179,7 +183,6 @@ public class PCEPTopologyProviderModuleTest extends AbstractInstructionScheduler
         moduleFactories.add(new NettyThreadgroupModuleFactory());
         moduleFactories.add(new SimplePCEPExtensionProviderContextModuleFactory());
         moduleFactories.add(new Stateful07TopologySessionListenerModuleFactory());
-        moduleFactories.add(new PCEPStatefulCapabilityModuleFactory());
         return moduleFactories;
     }
 
index 73ad20fa7608ec0cf392487aa0dbae5c1c9dd3cf..265da64e9ed126638e90b1ae50f74754282c6738 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.controller.config.yang.pcep.tunnel.provider;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import java.util.Collections;
 import java.util.List;
 import javax.management.ObjectName;
 import org.junit.Before;
@@ -21,12 +22,13 @@ import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgrou
 import org.opendaylight.controller.config.yang.pcep.impl.PCEPDispatcherImplModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.impl.PCEPSessionProposalFactoryImplModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.spi.SimplePCEPExtensionProviderContextModuleFactory;
-import org.opendaylight.controller.config.yang.pcep.stateful07.cfg.PCEPStatefulCapabilityModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.topology.provider.PCEPTopologyProviderModuleFactory;
 import org.opendaylight.controller.config.yang.pcep.topology.provider.PCEPTopologyProviderModuleMXBean;
 import org.opendaylight.controller.config.yang.pcep.topology.provider.PCEPTopologyProviderModuleTest;
 import org.opendaylight.controller.config.yang.pcep.topology.provider.Stateful07TopologySessionListenerModuleFactory;
 import org.opendaylight.controller.config.yang.programming.impl.AbstractInstructionSchedulerTest;
+import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
+import org.opendaylight.protocol.pcep.impl.BasePCEPSessionProposalFactory;
 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
 import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -44,6 +46,8 @@ public class PCEPTunnelTopologyProviderModuleTest extends AbstractInstructionSch
         super.setUp();
 
         setupMockService(PCEPExtensionProviderContext.class, new SimplePCEPExtensionProviderContext());
+        setupMockService(PCEPSessionProposalFactory.class, new BasePCEPSessionProposalFactory(120, 30,
+                Collections.emptyList()));
     }
 
     @Test
@@ -128,7 +132,6 @@ public class PCEPTunnelTopologyProviderModuleTest extends AbstractInstructionSch
         moduleFactories.add(new NettyThreadgroupModuleFactory());
         moduleFactories.add(new SimplePCEPExtensionProviderContextModuleFactory());
         moduleFactories.add(new Stateful07TopologySessionListenerModuleFactory());
-        moduleFactories.add(new PCEPStatefulCapabilityModuleFactory());
         return moduleFactories;
     }