Put dependencies for configfiles directly referenced in your features.xml file.
For every <configfile> reference in your features.xml file, you need a corresponding dependency here.
-->
- <!-- odl-sfc-sb-rest config files -->
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>sfc-sb-rest</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>config</classifier>
- </dependency>
<!-- odl-sfc-genius config files -->
<dependency>
<groupId>${project.groupId}</groupId>
<bundle>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/{{VERSION}}</bundle>
<bundle>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/{{VERSION}}</bundle>
<bundle>mvn:org.glassfish/javax.json/{{VERSION}}</bundle>
- <configfile finalname="etc/opendaylight/karaf/sfc-sb-rest-initial.xml">mvn:org.opendaylight.sfc/sfc-sb-rest/{{VERSION}}/xml/config</configfile>
</feature>
<feature name="odl-sfc-pot" version="${project.version}" description="OpenDaylight :: sfc-pot :: SFC Proof of Transit ">
<properties>
<jmxGeneratorPath>${project.build.directory}/generated-sources/config</jmxGeneratorPath>
- <configfile>configuration/initial/sfc-sb-rest-initial.xml</configfile>
</properties>
<dependencies>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-artifacts</id>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <artifacts>
- <artifact>
- <file>${project.build.directory}/classes/${configfile}</file>
- <type>xml</type>
- <classifier>config</classifier>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
</plugin>
</plugins>
</build>
package org.opendaylight.controller.config.yang.config.sfc_sb_rest_provider.impl;
import java.util.concurrent.ExecutionException;
+
import org.opendaylight.sfc.provider.OpendaylightSfc;
import org.opendaylight.sfc.sbrest.provider.keepalive.SbRestKeepAliveSocket;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestAclEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestRspEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestScfEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestSfEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestSffEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestSfgEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestSfstEntryDataListener;
-import org.opendaylight.sfc.sbrest.provider.listener.SbRestSfstateEntryDataListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SfcSbRestProviderModule extends AbstractSfcSbRestProviderModule {
+public class SfcSbRestProviderModule implements AutoCloseable{
private static final Logger LOG = LoggerFactory.getLogger(SfcSbRestProviderModule.class);
+ private static OpendaylightSfc opendaylightSfc;
- public SfcSbRestProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
- super(identifier, dependencyResolver);
- }
-
- public SfcSbRestProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.sfc_sb_rest_provider.impl.SfcSbRestProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
- super(identifier, dependencyResolver, oldModule, oldInstance);
+ public void startSbRestKeepAliveSocket() {
+ opendaylightSfc = OpendaylightSfc.getOpendaylightSfcObj();
+ opendaylightSfc.getExecutor().execute(new SbRestKeepAliveSocket());
}
@Override
- public void customValidation() {
- // add custom validation form module attributes here.
- }
-
- @Override
- public java.lang.AutoCloseable createInstance() {
-
- final OpendaylightSfc opendaylightSfc = OpendaylightSfc.getOpendaylightSfcObj();
-
- final SbRestSfEntryDataListener sbRestSfEntryDataListener = new SbRestSfEntryDataListener(opendaylightSfc);
- final SbRestSfgEntryDataListener sbRestSfgEntryDataListener = new SbRestSfgEntryDataListener(opendaylightSfc);
- final SbRestSffEntryDataListener sbRestSffEntryDataListener = new SbRestSffEntryDataListener(opendaylightSfc);
- final SbRestRspEntryDataListener sbRestRspEntryDataListener = new SbRestRspEntryDataListener(opendaylightSfc);
- final SbRestAclEntryDataListener sbRestAclEntryDataListener = new SbRestAclEntryDataListener(opendaylightSfc);
- final SbRestScfEntryDataListener sbRestScfEntryDataListener = new SbRestScfEntryDataListener(opendaylightSfc);
- final SbRestSfstEntryDataListener sbRestSfstEntryDataListener = new SbRestSfstEntryDataListener(opendaylightSfc);
- final SbRestSfstateEntryDataListener sbRestSfstateEntryDataListener = new SbRestSfstateEntryDataListener(opendaylightSfc);
- final SbRestKeepAliveSocket sbRestKeepAliveSocket = new SbRestKeepAliveSocket();
- opendaylightSfc.getExecutor().execute(sbRestKeepAliveSocket);
-
-
- // close()
- final class AutoCloseableSfcSbRest implements AutoCloseable {
-
- @Override
- public void close() {
- sbRestSfEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestSfgEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestSffEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestRspEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestAclEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestScfEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestSfstEntryDataListener.getDataChangeListenerRegistration().close();
- sbRestSfstateEntryDataListener.getDataChangeListenerRegistration().close();
-
- try {
- opendaylightSfc.close();
- } catch (ExecutionException | InterruptedException e) {
- LOG.error("\nFailed to close SfcSbRestProvider instance {} cleanly", this);
- }
- LOG.info("SfcSbRestProvider (instance {}) torn down", this);
- }
+ public void close() throws Exception {
+ try {
+ opendaylightSfc.close();
+ } catch (ExecutionException | InterruptedException e) {
+ LOG.error("Failed to close OpendaylightSfc instance {} cleanly", this);
}
-
- return new AutoCloseableSfcSbRest();
}
-
-}
+}
\ 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
- */
-
-/*
-* Generated file
-*
-* Generated from: yang module name: sfc-sb-rest-provider-impl yang module local name: sfc-sb-rest-provider-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Tue Oct 21 13:03:57 CEST 2014
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.controller.config.yang.config.sfc_sb_rest_provider.impl;
-public class SfcSbRestProviderModuleFactory extends org.opendaylight.controller.config.yang.config.sfc_sb_rest_provider.impl.AbstractSfcSbRestProviderModuleFactory {
-
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<snapshot>
- <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:sbrest="urn:opendaylight:params:xml:ns:yang:controller:config:sfc-sb-rest-provider:impl">
- sbrest:sfc-sb-rest-provider-impl
- </type>
- <name>sfc-sb-rest-provider-impl</name>
-
- <data-broker>
- <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
- <name>binding-data-broker</name>
- </data-broker>
- </module>
- </modules>
- </data>
-
- </configuration>
-
- <required-capabilities>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28</capability>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:config:sfc-provider:impl?module=sfc-provider-impl&revision=2014-06-30</capability>
- <capability>urn:opendaylight:params:xml:ns:yang:controller:config:sfc-sb-rest-provider:impl?module=sfc-sb-rest-provider-impl&revision=2014-10-20</capability>
- </required-capabilities>
-
-</snapshot>
\ No newline at end of file
--- /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"
+ odl:use-default-for-reference-types="true">
+
+ <reference id="dataBroker"
+ interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
+ odl:type="default" />
+
+ <bean id="opendaylightSfc"
+ class="org.opendaylight.sfc.provider.OpendaylightSfc"
+ destroy-method="close">
+ <property name="dataProvider" ref="dataBroker"/>
+ </bean>
+
+ <bean id="sbRestSfEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestSfgEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfgEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestSffEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSffEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestRspEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestRspEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestAclEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestAclEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestScfEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestScfEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestSfstEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfstEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sbRestSfstateEntryDataListener"
+ class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfstateEntryDataListener"
+ destroy-method="closeDataChangeListener">
+ <argument ref="opendaylightSfc"/>
+ </bean>
+
+ <bean id="sfcSbRestProviderModule"
+ class="org.opendaylight.controller.config.yang.config.sfc_sb_rest_provider.impl.SfcSbRestProviderModule"
+ init-method="startSbRestKeepAliveSocket"
+ destroy-method="close"/>
+
+</blueprint>
+++ /dev/null
-module sfc-sb-rest-provider-impl {
-
- yang-version 1;
- namespace "urn:opendaylight:params:xml:ns:yang:controller:config:sfc-sb-rest-provider:impl";
- prefix "sfc-sb-rest-provider-impl";
-
- import config { prefix config; revision-date 2013-04-05; }
- import rpc-context { prefix rpcx; revision-date 2013-06-17; }
- import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
-
-
- description
- "This module contains the base YANG definitions for
- sfc-sb-rest-provider implementation.";
-
- revision "2014-10-20" {
- description
- "Initial revision.";
- }
-
- // This is the definition of the service implementation as a module identity
- identity sfc-sb-rest-provider-impl {
- base config:module-type;
-
- // Specifies the prefix for generated java classes.
- config:java-name-prefix SfcSbRestProvider;
- }
-
-
- // Augments the 'configuration' choice node under modules/module.
- augment "/config:modules/config:module/config:configuration" {
- case sfc-sb-rest-provider-impl {
- when "/config:modules/config:module/config:type = 'sfc-sb-rest-provider-impl'";
-
- //wires in the data-broker service
- container data-broker {
- uses config:service-ref {
- refine type {
- mandatory false;
- config:required-identity mdsal:binding-async-data-broker;
- }
- }
- }
- }
- }
-}