X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetworkconfiguration%2Fneutron%2Fimplementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetworkconfig%2Fneutron%2Fimplementation%2FNeutronSubnetInterface.java;h=025c2f12f79013be5ccf57dba0bc2fa1259d7fe9;hp=049fd3283da007c4bf3a7a1e49191fb5fb04de7f;hb=9255eb1b0531be05266f52175044464fee30a969;hpb=93bfe8bc7d657d3c5ddd7cde508a3c0464724e67 diff --git a/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronSubnetInterface.java b/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronSubnetInterface.java index 049fd3283d..025c2f12f7 100644 --- a/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronSubnetInterface.java +++ b/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronSubnetInterface.java @@ -19,7 +19,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map.Entry; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.apache.felix.dm.Component; @@ -27,16 +26,15 @@ import org.opendaylight.controller.clustering.services.CacheConfigException; import org.opendaylight.controller.clustering.services.CacheExistException; import org.opendaylight.controller.clustering.services.IClusterContainerServices; import org.opendaylight.controller.clustering.services.IClusterServices; +import org.opendaylight.controller.configuration.ConfigurationObject; import org.opendaylight.controller.configuration.IConfigurationContainerAware; +import org.opendaylight.controller.configuration.IConfigurationContainerService; import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD; import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetCRUD; import org.opendaylight.controller.networkconfig.neutron.NeutronCRUDInterfaces; import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork; import org.opendaylight.controller.networkconfig.neutron.NeutronSubnet; -import org.opendaylight.controller.sal.utils.GlobalConstants; import org.opendaylight.controller.sal.utils.IObjectReader; -import org.opendaylight.controller.sal.utils.ObjectReader; -import org.opendaylight.controller.sal.utils.ObjectWriter; import org.opendaylight.controller.sal.utils.Status; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,13 +42,12 @@ import org.slf4j.LoggerFactory; public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfigurationContainerAware, IObjectReader { private static final Logger logger = LoggerFactory.getLogger(NeutronSubnetInterface.class); - private static String ROOT = GlobalConstants.STARTUPHOME.toString(); - private static final String FILENAME ="neutron.subnet"; - private static String fileName; + private static final String FILE_NAME ="neutron.subnet.conf"; private String containerName = null; private IClusterContainerServices clusterContainerService = null; + private IConfigurationContainerService configurationService; private ConcurrentMap subnetDB; // methods needed for creating caches @@ -67,7 +64,16 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio } } - @SuppressWarnings("deprecation") + public void setConfigurationContainerService(IConfigurationContainerService service) { + logger.trace("Configuration service set: {}", service); + this.configurationService = service; + } + + public void unsetConfigurationContainerService(IConfigurationContainerService service) { + logger.trace("Configuration service removed: {}", service); + this.configurationService = null; + } + private void allocateCache() { if (this.clusterContainerService == null) { logger.error("un-initialized clusterContainerService, can't create cache"); @@ -86,7 +92,7 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio logger.debug("Cache successfully created for Neutron Subnets"); } - @SuppressWarnings({ "unchecked", "deprecation" }) + @SuppressWarnings({ "unchecked" }) private void retrieveCache() { if (this.clusterContainerService == null) { logger.error("un-initialized clusterContainerService, can't retrieve cache"); @@ -102,7 +108,6 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio logger.debug("Cache was successfully retrieved for Neutron Subnets"); } - @SuppressWarnings("deprecation") private void destroyCache() { if (this.clusterContainerService == null) { logger.error("un-initialized clusterMger, can't destroy cache"); @@ -115,10 +120,7 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio private void startUp() { allocateCache(); retrieveCache(); - if ((clusterContainerService != null) && (clusterContainerService.amICoordinator())) { - loadConfiguration(); - } - + loadConfiguration(); } /** @@ -135,7 +137,6 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio // In the Global instance case the containerName is empty this.containerName = ""; } - fileName = ROOT + FILENAME + "_" + containerName + ".conf"; startUp(); } @@ -203,8 +204,9 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio @Override public NeutronSubnet getSubnet(String uuid) { - if (!subnetExists(uuid)) + if (!subnetExists(uuid)) { return null; + } return subnetDB.get(uuid); } @@ -224,8 +226,9 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio @Override public boolean addSubnet(NeutronSubnet input) { String id = input.getID(); - if (subnetExists(id)) + if (subnetExists(id)) { return false; + } subnetDB.putIfAbsent(id, input); INeutronNetworkCRUD networkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); @@ -236,8 +239,9 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio @Override public boolean removeSubnet(String uuid) { - if (!subnetExists(uuid)) + if (!subnetExists(uuid)) { return false; + } NeutronSubnet target = subnetDB.get(uuid); INeutronNetworkCRUD networkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this); @@ -249,39 +253,33 @@ public class NeutronSubnetInterface implements INeutronSubnetCRUD, IConfiguratio @Override public boolean updateSubnet(String uuid, NeutronSubnet delta) { - if (!subnetExists(uuid)) + if (!subnetExists(uuid)) { return false; + } NeutronSubnet target = subnetDB.get(uuid); return overwrite(target, delta); } @Override public boolean subnetInUse(String subnetUUID) { - if (!subnetExists(subnetUUID)) + if (!subnetExists(subnetUUID)) { return true; + } NeutronSubnet target = subnetDB.get(subnetUUID); return (target.getPortsInSubnet().size() > 0); } - @SuppressWarnings("unchecked") private void loadConfiguration() { - ObjectReader objReader = new ObjectReader(); - ConcurrentMap confList = (ConcurrentMap) - objReader.read(this, fileName); - - if (confList == null) { - return; - } - - for (String key : confList.keySet()) { - subnetDB.put(key, confList.get(key)); + for (ConfigurationObject conf : configurationService.retrieveConfiguration(this, FILE_NAME)) { + NeutronSubnet ns = (NeutronSubnet) conf; + subnetDB.put(ns.getID(), ns); } } @Override public Status saveConfiguration() { - ObjectWriter objWriter = new ObjectWriter(); - return objWriter.write(new ConcurrentHashMap(subnetDB), fileName); + return configurationService.persistConfiguration(new ArrayList(subnetDB.values()), + FILE_NAME); } @Override