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%2FNeutronFloatingIPInterface.java;h=51824d6ce1a93e42f372e6863e0f91ee2f696bb2;hp=b1b2610134cb2c7b97970e48e3fec477dab696f3;hb=b1ad203b32b73fc06a856cdfae243986c8037617;hpb=054306c1c3b582b4448db31c2058c7282246a258 diff --git a/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronFloatingIPInterface.java b/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronFloatingIPInterface.java index b1b2610134..51824d6ce1 100644 --- a/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronFloatingIPInterface.java +++ b/opendaylight/networkconfiguration/neutron/implementation/src/main/java/org/opendaylight/controller/networkconfig/neutron/implementation/NeutronFloatingIPInterface.java @@ -8,13 +8,8 @@ package org.opendaylight.controller.networkconfig.neutron.implementation; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.ObjectInputStream; import java.lang.reflect.Method; import java.util.ArrayList; -import java.util.Dictionary; -import java.util.EnumSet; import java.util.HashSet; import java.util.List; import java.util.Map.Entry; @@ -22,12 +17,6 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import org.apache.felix.dm.Component; -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.IConfigurationContainerAware; import org.opendaylight.controller.networkconfig.neutron.INeutronFloatingIPCRUD; import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD; import org.opendaylight.controller.networkconfig.neutron.INeutronPortCRUD; @@ -36,139 +25,17 @@ import org.opendaylight.controller.networkconfig.neutron.NeutronCRUDInterfaces; import org.opendaylight.controller.networkconfig.neutron.NeutronFloatingIP; import org.opendaylight.controller.networkconfig.neutron.NeutronPort; 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; -public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD, IConfigurationContainerAware, - IObjectReader { +public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD { private static final Logger logger = LoggerFactory.getLogger(NeutronFloatingIPInterface.class); - private static String ROOT = GlobalConstants.STARTUPHOME.toString(); - private static final String FILENAME ="neutron.floatingip"; - private static String fileName; - private String containerName = null; - private IClusterContainerServices clusterContainerService = null; - private ConcurrentMap floatingIPDB; - - // methods needed for creating caches - - void setClusterContainerService(IClusterContainerServices s) { - logger.debug("Cluster Service set"); - this.clusterContainerService = s; - } - - void unsetClusterContainerService(IClusterContainerServices s) { - if (this.clusterContainerService == s) { - logger.debug("Cluster Service removed!"); - this.clusterContainerService = null; - } - } - - @SuppressWarnings("deprecation") - private void allocateCache() { - if (this.clusterContainerService == null) { - logger.error("un-initialized clusterContainerService, can't create cache"); - return; - } - logger.debug("Creating Cache for Neutron FloatingIPs"); - try { - // neutron caches - this.clusterContainerService.createCache("neutronFloatingIPs", - EnumSet.of(IClusterServices.cacheMode.NON_TRANSACTIONAL)); - } catch (CacheConfigException cce) { - logger.error("Cache couldn't be created for Neutron - check cache mode"); - } catch (CacheExistException cce) { - logger.error("Cache for Neutron already exists, destroy and recreate"); - } - logger.debug("Cache successfully created for NeutronFloatingIps"); - } - - @SuppressWarnings({ "unchecked", "deprecation" }) - private void retrieveCache() { - if (this.clusterContainerService == null) { - logger.error("un-initialized clusterContainerService, can't retrieve cache"); - return; - } - - logger.debug("Retrieving cache for Neutron FloatingIPs"); - floatingIPDB = (ConcurrentMap) this.clusterContainerService - .getCache("neutronFloatingIPs"); - if (floatingIPDB == null) { - logger.error("Cache couldn't be retrieved for Neutron FloatingIPs"); - } - logger.debug("Cache was successfully retrieved for Neutron FloatingIPs"); - } - - @SuppressWarnings("deprecation") - private void destroyCache() { - if (this.clusterContainerService == null) { - logger.error("un-initialized clusterMger, can't destroy cache"); - return; - } - logger.debug("Destroying Cache for HostTracker"); - this.clusterContainerService.destroyCache("neutronFloatingIPs"); - } - - private void startUp() { - allocateCache(); - retrieveCache(); - if ((clusterContainerService != null) && (clusterContainerService.amICoordinator())) { - loadConfiguration(); - } - } - - /** - * Function called by the dependency manager when all the required - * dependencies are satisfied - * - */ - void init(Component c) { - Dictionary props = c.getServiceProperties(); - if (props != null) { - this.containerName = (String) props.get("containerName"); - logger.debug("Running containerName: {}", this.containerName); - } else { - // In the Global instance case the containerName is empty - this.containerName = ""; - } - fileName = ROOT + FILENAME + "_" + containerName + ".conf"; - startUp(); - } - - /** - * Function called by the dependency manager when at least one dependency - * become unsatisfied or when the component is shutting down because for - * example bundle is being stopped. - * - */ - void destroy() { - destroyCache(); - } - - /** - * Function called by dependency manager after "init ()" is called and after - * the services provided by the class are registered in the service registry - * - */ - void start() { - } - - /** - * Function called by the dependency manager before the services exported by - * the component are unregistered, this will be followed by a "destroy ()" - * calls - * - */ - void stop() { - } + private ConcurrentMap floatingIPDB = new ConcurrentHashMap(); // this method uses reflection to update an object from it's delta. + @SuppressWarnings("unused") private boolean overwrite(Object target, Object delta) { Method[] methods = target.getClass().getMethods(); @@ -203,8 +70,9 @@ public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD, IConf @Override public NeutronFloatingIP getFloatingIP(String uuid) { - if (!floatingIPExists(uuid)) + if (!floatingIPExists(uuid)) { return null; + } return floatingIPDB.get(uuid); } @@ -227,12 +95,14 @@ public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD, IConf INeutronSubnetCRUD subnetCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this); INeutronPortCRUD portCRUD = NeutronCRUDInterfaces.getINeutronPortCRUD(this); - if (floatingIPExists(input.getID())) + if (floatingIPExists(input.getID())) { return false; + } //if floating_ip_address isn't there, allocate from the subnet pool NeutronSubnet subnet = subnetCRUD.getSubnet(networkCRUD.getNetwork(input.getFloatingNetworkUUID()).getSubnets().get(0)); - if (input.getFloatingIPAddress() == null) + if (input.getFloatingIPAddress() == null) { input.setFloatingIPAddress(subnet.getLowAddr()); + } subnet.allocateIP(input.getFloatingIPAddress()); //if port_id is there, bind port to this floating ip @@ -251,8 +121,9 @@ public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD, IConf INeutronSubnetCRUD subnetCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this); INeutronPortCRUD portCRUD = NeutronCRUDInterfaces.getINeutronPortCRUD(this); - if (!floatingIPExists(uuid)) + if (!floatingIPExists(uuid)) { return false; + } NeutronFloatingIP floatIP = getFloatingIP(uuid); //if floating_ip_address isn't there, allocate from the subnet pool NeutronSubnet subnet = subnetCRUD.getSubnet(networkCRUD.getNetwork(floatIP.getFloatingNetworkUUID()).getSubnets().get(0)); @@ -269,8 +140,9 @@ public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD, IConf public boolean updateFloatingIP(String uuid, NeutronFloatingIP delta) { INeutronPortCRUD portCRUD = NeutronCRUDInterfaces.getINeutronPortCRUD(this); - if (!floatingIPExists(uuid)) + if (!floatingIPExists(uuid)) { return false; + } NeutronFloatingIP target = floatingIPDB.get(uuid); if (target.getPortUUID() != null) { NeutronPort port = portCRUD.getPort(target.getPortUUID()); @@ -287,30 +159,4 @@ public class NeutronFloatingIPInterface implements INeutronFloatingIPCRUD, IConf target.setFixedIPAddress(delta.getFixedIPAddress()); return true; } - - @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()) { - floatingIPDB.put(key, confList.get(key)); - } - } - - @Override - public Status saveConfiguration() { - ObjectWriter objWriter = new ObjectWriter(); - return objWriter.write(new ConcurrentHashMap(floatingIPDB), fileName); - } - - @Override - public Object readObject(ObjectInputStream ois) throws FileNotFoundException, IOException, ClassNotFoundException { - return ois.readObject(); - } }