<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>
<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>
<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}'>
base "config:service-type";
config:java-class "org.opendaylight.protocol.pcep.PCEPSessionProposalFactory";
+ config:disable-osgi-service-registration;
}
identity pcep-capability {
<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>
<capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:impl?module=odl-pcep-impl-cfg&revision=2013-06-27</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:spi?module=odl-pcep-spi-cfg&revision=2013-11-15</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:programming:spi?module=odl-programming-spi-cfg&revision=2013-11-15</capability>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:stateful07:cfg?module=odl-pcep-ietf-stateful07-cfg&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>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<snapshot>
- <required-capabilities>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19</capability>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:impl?module=odl-pcep-impl-cfg&revision=2013-06-27</capability>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:spi?module=odl-pcep-spi-cfg&revision=2013-11-15</capability>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:pcep:sr:cfg?module=odl-pcep-segment-routing-cfg&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
+++ /dev/null
-/*
- * 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);
- }
- }
-}
+++ /dev/null
-/*
- * 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 {
-
-}
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;
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
--- /dev/null
+org.opendaylight.protocol.pcep.ietf.stateful07.PCEPStatefulCapability
\ No newline at end of file
<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
--- /dev/null
+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
+++ /dev/null
-// 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;
- }
- }
-}
-
+++ /dev/null
-/*
- * 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;
- }
-}
.setTriggeredInitialSync(true)
.setTriggeredResync(false)
.setDeltaLspSyncCapability(true)
- .setIncludeDbVersion(false)
+ .setIncludeDbVersion(true)
.build())
.build())
.build())
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());
*/
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) {
}
@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 {
}
}
*/
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;
+ }
}
*/
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;
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;
--- /dev/null
+<?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
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;
- }
- }
- }
}
}
}
--- /dev/null
+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
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;
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;
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 {
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));
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);
+++ /dev/null
-/*
- * 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);
- }
-}
+++ /dev/null
-/*
- * 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);
- }
-
- }
-
-}
+++ /dev/null
-/*
- * 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 {
-
-}
--- /dev/null
+org.opendaylight.protocol.pcep.segment.routing.PCEPSegmentRoutingCapability
\ No newline at end of file
<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
+++ /dev/null
-// 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;
- }
- }
- }
-}
-
"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
+++ /dev/null
-/*
- * 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;
- }
-}
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;
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;
super.setUp();
setupMockService(PCEPExtensionProviderContext.class, new SimplePCEPExtensionProviderContext());
+ setupMockService(PCEPSessionProposalFactory.class, new BasePCEPSessionProposalFactory(120, 30,
+ Collections.emptyList()));
}
@Test
moduleFactories.add(new NettyThreadgroupModuleFactory());
moduleFactories.add(new SimplePCEPExtensionProviderContextModuleFactory());
moduleFactories.add(new Stateful07TopologySessionListenerModuleFactory());
- moduleFactories.add(new PCEPStatefulCapabilityModuleFactory());
return moduleFactories;
}
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;
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;
super.setUp();
setupMockService(PCEPExtensionProviderContext.class, new SimplePCEPExtensionProviderContext());
+ setupMockService(PCEPSessionProposalFactory.class, new BasePCEPSessionProposalFactory(120, 30,
+ Collections.emptyList()));
}
@Test
moduleFactories.add(new NettyThreadgroupModuleFactory());
moduleFactories.add(new SimplePCEPExtensionProviderContextModuleFactory());
moduleFactories.add(new Stateful07TopologySessionListenerModuleFactory());
- moduleFactories.add(new PCEPStatefulCapabilityModuleFactory());
return moduleFactories;
}