2 * Copyright (C) 2014 Red Hat, Inc.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.networkconfig.neutron.implementation;
11 import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolMemberCRUD;
12 import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancerPoolMember;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
16 import java.lang.reflect.Method;
17 import java.util.ArrayList;
18 import java.util.HashSet;
19 import java.util.List;
22 import java.util.concurrent.ConcurrentHashMap;
23 import java.util.concurrent.ConcurrentMap;
25 public class NeutronLoadBalancerPoolMemberInterface
26 implements INeutronLoadBalancerPoolMemberCRUD {
27 private static final Logger logger = LoggerFactory.getLogger(NeutronLoadBalancerPoolMemberInterface.class);
28 private ConcurrentMap<String, NeutronLoadBalancerPoolMember> loadBalancerPoolMemberDB = new ConcurrentHashMap<String, NeutronLoadBalancerPoolMember>();
31 // this method uses reflection to update an object from it's delta.
33 private boolean overwrite(Object target, Object delta) {
34 Method[] methods = target.getClass().getMethods();
36 for (Method toMethod : methods) {
37 if (toMethod.getDeclaringClass().equals(target.getClass())
38 && toMethod.getName().startsWith("set")) {
40 String toName = toMethod.getName();
41 String fromName = toName.replace("set", "get");
44 Method fromMethod = delta.getClass().getMethod(fromName);
45 Object value = fromMethod.invoke(delta, (Object[]) null);
47 toMethod.invoke(target, value);
49 } catch(Exception e) {
59 public boolean neutronLoadBalancerPoolMemberExists(String uuid) {
60 return loadBalancerPoolMemberDB.containsKey(uuid);
64 public NeutronLoadBalancerPoolMember getNeutronLoadBalancerPoolMember(String uuid) {
65 if (!neutronLoadBalancerPoolMemberExists(uuid)) {
66 logger.debug("No LoadBalancerPoolMember Have Been Defined");
69 return loadBalancerPoolMemberDB.get(uuid);
73 public List<NeutronLoadBalancerPoolMember> getAllNeutronLoadBalancerPoolMembers() {
74 Set<NeutronLoadBalancerPoolMember> allLoadBalancerPoolMembers = new HashSet<NeutronLoadBalancerPoolMember>();
75 for (Map.Entry<String, NeutronLoadBalancerPoolMember> entry : loadBalancerPoolMemberDB.entrySet()) {
76 NeutronLoadBalancerPoolMember loadBalancerPoolMember = entry.getValue();
77 allLoadBalancerPoolMembers.add(loadBalancerPoolMember);
79 logger.debug("Exiting getLoadBalancerPoolMembers, Found {} OpenStackLoadBalancerPoolMember",
80 allLoadBalancerPoolMembers.size());
81 List<NeutronLoadBalancerPoolMember> ans = new ArrayList<NeutronLoadBalancerPoolMember>();
82 ans.addAll(allLoadBalancerPoolMembers);
87 public boolean addNeutronLoadBalancerPoolMember(NeutronLoadBalancerPoolMember input) {
88 if (neutronLoadBalancerPoolMemberExists(input.getPoolMemberID())) {
91 loadBalancerPoolMemberDB.putIfAbsent(input.getPoolMemberID(), input);
96 public boolean removeNeutronLoadBalancerPoolMember(String uuid) {
97 if (!neutronLoadBalancerPoolMemberExists(uuid)) {
100 loadBalancerPoolMemberDB.remove(uuid);
105 public boolean updateNeutronLoadBalancerPoolMember(String uuid, NeutronLoadBalancerPoolMember delta) {
106 if (!neutronLoadBalancerPoolMemberExists(uuid)) {
109 NeutronLoadBalancerPoolMember target = loadBalancerPoolMemberDB.get(uuid);
110 return overwrite(target, delta);
114 public boolean neutronLoadBalancerPoolMemberInUse(String loadBalancerPoolMemberID) {
115 return !neutronLoadBalancerPoolMemberExists(loadBalancerPoolMemberID);