Improve property-based configuration 30/53630/16
authorTomas Slusny <tomas.slusny@pantheon.tech>
Tue, 21 Mar 2017 18:17:22 +0000 (19:17 +0100)
committerTomas Slusny <tomas.slusny@pantheon.tech>
Wed, 19 Apr 2017 09:01:26 +0000 (11:01 +0200)
commitf1cc4de7dee9e22c231a90cf517b03bc5071ad35
tree8f137a0ddd06258adf43982bfc6b6c6c423428f8
parent9bbbed054ff41e30a7b71675fa803a2d29223c6f
Improve property-based configuration

- Add OpenFlowPluginConfigurationService. This service can control
  updating of OpenFlowPlugin configuration (skip-table-features etc.)
  in initialization phase and also on the fly.
- Comment out default settings in org.opendaylight.openflowplugin.cfg
  because with all default values set in that file, we are ignoring
  values specified in openflow-provider-config.yang.
- Add support for missing configuration values from
  openflow-provider-config.yang to OpenFlowPluginConfigurationService
- Remove changeable configuration values that was passed to some
  OpenFlowPlugin class implementations to both constructors and setters
  from constructors to prevent code duplicity and to simplify code a bit

Now, when feature is installed,
default values are taken from openflow-provider-config.yang, then we
check if we have org.opendaylight.openflowplugin.cfg file in karaf/etc/
(blueprint will do this for us) and try to read it as map. Then we will
pass this map to update method, that will iterate over this map and
parse it's keys and values and calls appropriate update methods in
OpenflowPluginProviderImpl based on key
(f.e skip-table-features will call
OpenflowPluginProviderImpl#updateSkipTableFeatures).

When org.opendaylight.openflowplugin.cfg file is changed, we receive
notification about it in form of
OpenFlowPluginConfigurationService#update method call, and we will
repeat same procedure as during initialization (parse map passed as
argument to this method and update configuration).

Resolves: bug 7218

Change-Id: Ida986f7dfffe55a90ddb6f354f0addf56c3c4b90
Signed-off-by: Tomas Slusny <tomas.slusny@pantheon.tech>
23 files changed:
features-aggregator/odl-openflowplugin-southbound/src/main/features/features.xml
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/OFConstants.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/OpenFlowPluginConfigurationService.java [new file with mode: 0644]
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/OpenFlowPluginProvider.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/OpenFlowPluginProviderFactory.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceManager.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/rpc/RpcManager.java
openflowplugin-api/src/main/yang/openflow-provider-config.yang
openflowplugin-blueprint-config/src/main/resources/initial/openflowplugin.cfg
openflowplugin-blueprint-config/src/main/resources/org/opendaylight/blueprint/openflowplugin.xml
openflowplugin-impl/pom.xml
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderFactoryImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/connection/ConnectionManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/connection/ConnectionManagerImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImplTest.java