Allow setting some configuration variables 49/36949/2
authorLorand Jakab <lojakab@cisco.com>
Thu, 31 Mar 2016 12:55:44 +0000 (15:55 +0300)
committerLorand Jakab <lojakab@cisco.com>
Thu, 31 Mar 2016 13:14:24 +0000 (16:14 +0300)
The goal of this patch is to enable writing integration tests that can
change configuration variables, so that different setups can be tested.
It is not a complete patch, we still need to discuss what our approach
to configuration will be, but we have to at least unblock integration
test development.

Change-Id: Ib5c8909f6e85086370ea3533a3b03b373d7109c9
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
mappingservice/api/src/main/java/org/opendaylight/lispflowmapping/interfaces/mappingservice/IMappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/MappingService.java
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/config/ConfigIni.java

index 454970e45401c6e51acb5ff963dfcb0ea312e392..16e2309abeb22065f2d00ec03ce6d06a153ec1d9 100644 (file)
@@ -155,6 +155,14 @@ public interface IMappingService {
      */
     void setMappingOverwrite(boolean overwrite);
 
+    /**
+     * Configures Mapping Service mapping lookup policy option.
+     *
+     * @param policy
+     *            the policy to be activated
+     */
+    void setLookupPolicy(int policy);
+
     /**
      * Print all mappings. Used for testing, debugging and the karaf shell
      *
index 7046bc41b58a5270e02882b23f8b2ad39f5f5544..8f09c34031850e050f94169fdf492cb35b2ed07c 100644 (file)
@@ -106,6 +106,7 @@ public class LispMappingService implements IFlowMapping, BindingAwareProvider, I
         if (mapResolver != null) {
             mapResolver.setSubscriptionService(smr);
         }
+        ConfigIni.getInstance().setSmr(smr);
     }
 
     public NotificationService getNotificationService() {
index 81725d752ca9a1c5bf2507a5ce4d57e3a728bded..430b5ac98a5779721bcfb08c537abe6b0421033f 100644 (file)
@@ -124,9 +124,15 @@ public class MappingService implements OdlMappingserviceService, IMappingService
         this.overwritePolicy = overwrite;
         if (mappingSystem != null) {
             mappingSystem.setOverwritePolicy(overwrite);
+            ConfigIni.getInstance().setMappingOverwrite(overwrite);
         }
     }
 
+    @Override
+    public void setLookupPolicy(int policy) {
+        ConfigIni.getInstance().setLookupPolicy(policy);
+    }
+
     public void initialize() {
         bindingAwareBroker.registerProvider(this);
 
index 8cc125d466f7464beb06ecfaacf81ae9445d0a9f..e06068319543d068b12742b27d6d81a355425d56 100644 (file)
@@ -33,6 +33,7 @@ public final class ConfigIni {
     private static final String LISP_ELP_POLICY = "lisp.elpPolicy";
 
     // lookupPolicy options
+    // TODO we need an enum for this in mappingservice.api (or a YANG model)
     public static final int NB_FIRST = 0;
     public static final int NB_AND_SB = 1;
 
@@ -215,10 +216,22 @@ public final class ConfigIni {
         return mappingOverwrite;
     }
 
+    public void setMappingOverwrite(boolean mappingOverwrite) {
+        LOG.debug("Setting configuration variable '{}' to '{}'", LISP_MAPPING_OVERWRITE, mappingOverwrite);
+        this.mappingOverwrite = mappingOverwrite;
+        LOG.debug("Setting configuration variable '{}' to '{}'", LISP_MAPPING_MERGE, !(mappingOverwrite));
+        this.mappingMerge = !(mappingOverwrite);
+    }
+
     public boolean smrIsSet() {
         return smr;
     }
 
+    public void setSmr(boolean smr) {
+        LOG.debug("Setting configuration variable '{}' to '{}'", LISP_SMR, smr);
+        this.smr = smr;
+    }
+
     public String getElpPolicy() {
         return elpPolicy;
     }
@@ -227,6 +240,13 @@ public final class ConfigIni {
         return lookupPolicy;
     }
 
+    public void setLookupPolicy(int lookupPolicy) {
+        if (lookupPolicy != NB_FIRST || lookupPolicy != NB_AND_SB) {
+            return;
+        }
+        this.lookupPolicy = lookupPolicy;
+    }
+
     public static ConfigIni getInstance() {
         return INSTANCE;
     }