<artifactId>mappingservice.implementation</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mappingservice.inmemorydb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mappingservice.netconf</artifactId>
<artifactId>mappingservice.implementation</artifactId>
<version>${lispflowmapping.version}</version>
</dependency>
-
+ <dependency>
+ <groupId>org.opendaylight.lispflowmapping</groupId>
+ <artifactId>mappingservice.inmemorydb</artifactId>
+ <version>${lispflowmapping.version}</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>mappingservice.netconf</artifactId>
<groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>mappingservice.config</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.lispflowmapping</groupId>
+ <artifactId>mappingservice.inmemorydb</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mappingservice.inmemorydb</artifactId>
+ <version>${project.version}</version>
+ <classifier>config</classifier>
+ <type>xml</type>
+ </dependency>
<dependency>
<groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>mappingservice.netconf</artifactId>
<!-- <feature version="${clustering.services.version}">odl-adsal-clustering</feature> -->
<feature version='${yangtools.version}'>odl-yangtools-binding</feature>
<feature version='${yangtools.version}'>odl-yangtools-models</feature>
+ <feature version="${lispflowmapping.version}">odl-lispflowmapping-inmemorydb</feature>
<bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
<bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.yangmodel/${lispflowmapping.version}</bundle>
<bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.api/${lispflowmapping.version}</bundle>
</configfile>
</feature>
+ <feature name="odl-lispflowmapping-inmemorydb" description="OpenDaylight :: LISP Flow Mapping :: In Memory DB" version='${lispflowmapping.version}'>
+ <feature version="${mdsal.version}">odl-mdsal-broker</feature>
+ <feature version='${yangtools.version}'>odl-yangtools-binding</feature>
+ <feature version='${yangtools.version}'>odl-yangtools-models</feature>
+ <bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
+ <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.yangmodel/${lispflowmapping.version}</bundle>
+ <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.api/${lispflowmapping.version}</bundle>
+ <bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.inmemorydb/${lispflowmapping.version}</bundle>
+ <configfile finalname="${configfile.directory}/lfm-inmemorydb.xml">
+ mvn:org.opendaylight.lispflowmapping/mappingservice.inmemorydb/${lispflowmapping.version}/xml/config
+ </configfile>
+ </feature>
+
<feature name="odl-lispflowmapping-southbound" description="OpenDaylight :: LISP Flow Mapping :: Southbound Plugin" version='${lispflowmapping.version}'>
<feature version="${lispflowmapping.version}">odl-lispflowmapping-mappingservice</feature>
<bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.southbound/${lispflowmapping.version}</bundle>
<feature version="${lispflowmapping.version}">odl-lispflowmapping-mappingservice</feature>
<bundle>mvn:org.opendaylight.lispflowmapping/mappingservice.neutron/${lispflowmapping.version}</bundle>
</feature>
+
</features>
<version>1.3.0-SNAPSHOT</version>
</parent>
- <groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>mappingservice.api</artifactId>
- <version>1.3.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Mapping Service Public APIs</name>
<groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>mappingservice.yangmodel</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools.model</groupId>
+ <artifactId>ietf-inet-types</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools.model</groupId>
+ <artifactId>ietf-yang-types</artifactId>
+ </dependency>
</dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Export-Package>org.opendaylight.lispflowmapping.interfaces.dao,
- org.opendaylight.lispflowmapping.interfaces.lisp,
- org.opendaylight.lispflowmapping.type,
- org.opendaylight.lispflowmapping.type.lisp,
- org.opendaylight.lispflowmapping.type.lisp.address,
- org.opendaylight.lispflowmapping.type.sbplugin</Export-Package>
- <Import-Package>org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.locatorrecords,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidtolocatorrecords,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispsimpleaddress,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispsimpleaddress.primitiveaddress,
- org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.transportaddress,
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924,
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924,
- org.opendaylight.controller.sal.binding.api,
- org.opendaylight.yangtools.yang.binding,
- javax.xml.bind,
- javax.xml.bind.annotation,
- org.slf4j,
- org.opendaylight.yangtools.yang.common,
- com.google.common.collect</Import-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
--- /dev/null
+module lfm-ms-dao {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao";
+ prefix "ms-dao";
+
+ import config { prefix config; revision-date 2013-04-05; }
+
+ description
+ "Service definition for Mapping Service DAO.";
+
+ revision "2015-07-13" {
+ description
+ "Initial revision";
+ }
+
+ identity ms-dao {
+ base "config:service-type";
+ config:java-class "org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO";
+ }
+}
\ No newline at end of file
<version>1.3.0-SNAPSHOT</version>
</parent>
- <groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>mappingservice.implementation</artifactId>
- <version>1.3.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Mapping Service Implementation</name>
<artifactId>mappingservice.api</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mappingservice.inmemorydb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mappingservice.yangmodel</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- needed for activator -->
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.dependencymanager</artifactId>
- </dependency>
-
<!-- needed for osgi console -->
<dependency>
<groupId>equinoxSDK381</groupId>
<snapshot>
<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:lfm:ms:dao?module=lfm-ms-dao&revision=2015-07-13</capability>
<capability>urn:opendaylight:params:xml:ns:yang:controller:config:lfm-mappingservice:impl?module=lfm-mappingservice-impl&revision=2015-05-17</capability>
</required-capabilities>
<configuration>
prefix:lfm-mappingservice-impl
</type>
<name>lfm-mappingservice-default</name>
-
<rpc-registry>
<type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
<name>binding-rpc-broker</name>
</rpc-registry>
-
<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>
-
<broker>
<type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
<name>binding-osgi-broker</name>
</broker>
+ <dao>
+ <type xmlns:dao="urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao">dao:ms-dao</type>
+ <name>lfm-ms-inmemorydb</name>
+ </dao>
</module>
</modules>
<services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
</service>
</services>
</data>
-
</configuration>
-
</snapshot>
\ No newline at end of file
lfmService.setDataBrokerService(getDataBrokerDependency());
lfmService.setRpcProviderRegistry(getRpcRegistryDependency());
lfmService.setBindingAwareBroker(getBrokerDependency());
+ lfmService.setLispDao(getDaoDependency());
lfmService.initialize();
return lfmService;
import org.opendaylight.controller.sal.binding.api.NotificationService;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
-import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKey;
import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceNoMaskKey;
import org.opendaylight.lispflowmapping.implementation.lisp.AbstractLispComponent;
LfmMappingDatabaseRpc mappingDbProviderRpc = new LfmMappingDatabaseRpc(dataBrokerService);
lfmDbRpc = rpcRegistry.addRpcImplementation(LfmMappingDatabaseService.class, mappingDbProviderRpc);
dsbe = new DataStoreBackEnd(dataBrokerService);
- setLispDao(new HashMapDb());
+ restoreDaoFromDatastore();
}
@Override
mapServer = new MapServer(dao);
}
- void setLispDao(ILispDAO dao) {
+ public void setLispDao(ILispDAO dao) {
LOG.trace("LispDAO set in LispMappingService");
basicInit(dao);
- restoreDaoFromDatastore();
}
void unsetLispDao(ILispDAO dao) {
import java.util.HashSet;
-import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKeyUtil;
import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
import org.opendaylight.lispflowmapping.implementation.util.MaskUtil;
+import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
import org.opendaylight.lispflowmapping.interfaces.dao.IMappingServiceKey;
import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry;
import org.apache.commons.lang3.BooleanUtils;
import org.opendaylight.lispflowmapping.implementation.authentication.LispAuthenticationUtil;
import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
-import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKeyUtil;
import org.opendaylight.lispflowmapping.implementation.util.DAOMappingUtil;
import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
import org.opendaylight.lispflowmapping.implementation.util.MapNotifyBuilderHelper;
+import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
import org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO;
import org.opendaylight.lispflowmapping.interfaces.dao.IMappingServiceKey;
import org.opendaylight.lispflowmapping.interfaces.dao.MappingEntry;
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; }
-
+ import lfm-ms-dao { prefix ms-dao; revision-date 2015-07-13; }
description
"This module contains the base YANG definitions for
}
}
}
-
container broker {
uses config:service-ref {
refine type {
}
}
}
-
container rpc-registry {
uses config:service-ref {
refine type {
}
}
}
+ container dao {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity ms-dao:ms-dao;
+ }
+ }
+ }
}
}
}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.opendaylight.lispflowmapping</groupId>
+ <artifactId>mappingservice-parent</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>mappingservice.inmemorydb</artifactId>
+ <packaging>bundle</packaging>
+ <name>Mapping Service Inmemory Mappings Database</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mappingservice.api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot>
+ <required-capabilities>
+ <capability>urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao?module=lfm-ms-dao&revision=2015-07-13</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:config:lfm:ms:dao:inmemorydb">
+ prefix:lfm-ms-inmemorydb
+ </type>
+ <name>lfm-ms-inmemorydb-default</name>
+ <record-timeout>240</record-timeout>
+ </module>
+ </modules>
+ <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+ <service>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao">prefix:ms-dao</type>
+ <instance>
+ <name>lfm-ms-inmemorydb</name>
+ <provider>/modules/module[type='lfm-ms-inmemorydb'][name='lfm-ms-inmemorydb-default']
+ </provider>
+ </instance>
+ </service>
+ </services>
+ </data>
+ </configuration>
+</snapshot>
\ No newline at end of file
--- /dev/null
+package org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb;
+
+import org.opendaylight.lispflowmapping.inmemorydb.HashMapDb;
+
+public class InMemoryDbModule extends org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb.AbstractInMemoryDbModule {
+ public InMemoryDbModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+ super(identifier, dependencyResolver);
+ }
+
+ public InMemoryDbModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb.InMemoryDbModule oldModule, java.lang.AutoCloseable oldInstance) {
+ super(identifier, dependencyResolver, oldModule, oldInstance);
+ }
+
+ @Override
+ public void customValidation() {
+ // add custom validation form module attributes here.
+ }
+
+ @Override
+ public java.lang.AutoCloseable createInstance() {
+ final HashMapDb hashMapDb = new HashMapDb();
+ hashMapDb.setRecordTimeOut(getRecordTimeout());
+ return hashMapDb;
+ }
+}
--- /dev/null
+/*
+* Generated file
+*
+* Generated from: yang module name: lfm-ms-inmemorydb yang module local name: lfm-ms-inmemorydb
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Mon Jul 13 12:44:05 CEST 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb;
+public class InMemoryDbModuleFactory extends org.opendaylight.controller.config.yang.config.lfm.ms.dao.inmemorydb.AbstractInMemoryDbModuleFactory {
+
+}
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.lispflowmapping.implementation.dao;
+package org.opendaylight.lispflowmapping.inmemorydb;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class HashMapDb implements ILispDAO {
+public class HashMapDb implements ILispDAO, AutoCloseable {
protected static final Logger LOG = LoggerFactory.getLogger(HashMapDb.class);
private ConcurrentMap<Object, ConcurrentMap<String, Object>> data = new ConcurrentHashMap<Object, ConcurrentMap<String, Object>>();
this.timeUnit = timeUnit;
}
+ public void close() throws Exception {
+ data.clear();
+ }
+
}
--- /dev/null
+module lfm-ms-inmemorydb {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:controller:config:lfm:ms:dao:inmemorydb";
+ prefix "inmemorydb";
+
+ import config { prefix config; revision-date 2013-04-05; }
+ import lfm-ms-dao { prefix ms-dao; revision-date 2015-07-13; }
+
+ description
+ "Service definition for Mapping Service DAO.";
+
+ revision "2015-07-13" {
+ description
+ "Initial revision";
+ }
+
+ identity lfm-ms-inmemorydb {
+ base config:module-type;
+ config:provided-service ms-dao:ms-dao;
+ config:java-name-prefix InMemoryDb;
+ }
+
+ augment "/config:modules/config:module/config:configuration" {
+ case lfm-ms-inmemorydb {
+ when "/config:modules/config:module/config:type = 'lfm-ms-inmemorydb'";
+ leaf record-timeout {
+ type uint16;
+ description
+ "Mapping record timeout";
+ }
+ }
+ }
+}
\ No newline at end of file
<groupId>org.opendaylight.yangtools.model</groupId>
<artifactId>ietf-inet-types</artifactId>
</dependency>
+ <!-- needed for activator -->
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.dependencymanager</artifactId>
+ </dependency>
</dependencies>
<build>
<module>api</module>
<module>config</module>
<module>clusterdao</module>
+ <module>inmemorydb</module>
<module>implementation</module>
<module>southbound</module>
<module>neutron</module>