Fix logger constant name and remove unused logger constants
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronLoadBalancerHealthMonitorInterface.java
1 /*
2  * Copyright (C) 2014 Red Hat, Inc.
3  *
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
7  */
8
9 package org.opendaylight.neutron.transcriber;
10
11 import java.lang.reflect.Method;
12 import java.util.ArrayList;
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Map.Entry;
16 import java.util.Set;
17 import java.util.concurrent.ConcurrentHashMap;
18 import java.util.concurrent.ConcurrentMap;
19
20 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
21 import org.opendaylight.neutron.spi.INeutronLoadBalancerHealthMonitorCRUD;
22 import org.opendaylight.neutron.spi.NeutronLoadBalancerHealthMonitor;
23 import org.opendaylight.neutron.spi.Neutron_ID;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev141002.HealthmonitorAttrs.Type;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev141002.lbaas.attributes.Healthmonitor;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev141002.lbaas.attributes.healthmonitor.Healthmonitors;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev141002.lbaas.attributes.healthmonitor.HealthmonitorsBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150325.Neutron;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34 public class NeutronLoadBalancerHealthMonitorInterface extends AbstractNeutronInterface<Healthmonitors, NeutronLoadBalancerHealthMonitor> implements INeutronLoadBalancerHealthMonitorCRUD {
35     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronLoadBalancerHealthMonitorInterface.class);
36     private ConcurrentMap<String, NeutronLoadBalancerHealthMonitor> loadBalancerHealthMonitorDB = new ConcurrentHashMap<String, NeutronLoadBalancerHealthMonitor>();
37
38
39     NeutronLoadBalancerHealthMonitorInterface(ProviderContext providerContext) {
40         super(providerContext);
41     }
42
43     // this method uses reflection to update an object from it's delta.
44
45     private boolean overwrite(Object target, Object delta) {
46         Method[] methods = target.getClass().getMethods();
47
48         for (Method toMethod : methods) {
49             if (toMethod.getDeclaringClass().equals(target.getClass())
50                     && toMethod.getName().startsWith("set")) {
51
52                 String toName = toMethod.getName();
53                 String fromName = toName.replace("set", "get");
54
55                 try {
56                     Method fromMethod = delta.getClass().getMethod(fromName);
57                     Object value = fromMethod.invoke(delta, (Object[]) null);
58                     if (value != null) {
59                         toMethod.invoke(target, value);
60                     }
61                 } catch (Exception e) {
62                     LOGGER.error(e.getMessage());
63                     return false;
64                 }
65             }
66         }
67         return true;
68     }
69
70     @Override
71     public boolean neutronLoadBalancerHealthMonitorExists(String uuid) {
72         return loadBalancerHealthMonitorDB.containsKey(uuid);
73     }
74
75     @Override
76     public NeutronLoadBalancerHealthMonitor getNeutronLoadBalancerHealthMonitor(String uuid) {
77         if (!neutronLoadBalancerHealthMonitorExists(uuid)) {
78             LOGGER.debug("No LoadBalancerHealthMonitor has Been Defined");
79             return null;
80         }
81         return loadBalancerHealthMonitorDB.get(uuid);
82     }
83
84     @Override
85     public List<NeutronLoadBalancerHealthMonitor> getAllNeutronLoadBalancerHealthMonitors() {
86         Set<NeutronLoadBalancerHealthMonitor> allLoadBalancerHealthMonitors = new HashSet<NeutronLoadBalancerHealthMonitor>();
87         for (Entry<String, NeutronLoadBalancerHealthMonitor> entry : loadBalancerHealthMonitorDB.entrySet()) {
88             NeutronLoadBalancerHealthMonitor loadBalancerHealthMonitor = entry.getValue();
89             allLoadBalancerHealthMonitors.add(loadBalancerHealthMonitor);
90         }
91         LOGGER.debug("Exiting getLoadBalancerHealthMonitors, Found {} OpenStackLoadBalancerHealthMonitor", allLoadBalancerHealthMonitors.size());
92         List<NeutronLoadBalancerHealthMonitor> ans = new ArrayList<NeutronLoadBalancerHealthMonitor>();
93         ans.addAll(allLoadBalancerHealthMonitors);
94         return ans;
95     }
96
97     @Override
98     public boolean addNeutronLoadBalancerHealthMonitor(NeutronLoadBalancerHealthMonitor input) {
99         if (neutronLoadBalancerHealthMonitorExists(input.getLoadBalancerHealthMonitorID())) {
100             return false;
101         }
102         loadBalancerHealthMonitorDB.putIfAbsent(input.getLoadBalancerHealthMonitorID(), input);
103         //TODO: add code to find INeutronLoadBalancerHealthMonitorAware services and call newtorkCreated on them
104         return true;
105     }
106
107     @Override
108     public boolean removeNeutronLoadBalancerHealthMonitor(String uuid) {
109         if (!neutronLoadBalancerHealthMonitorExists(uuid)) {
110             return false;
111         }
112         loadBalancerHealthMonitorDB.remove(uuid);
113         //TODO: add code to find INeutronLoadBalancerHealthMonitorAware services and call newtorkDeleted on them
114         return true;
115     }
116
117     @Override
118     public boolean updateNeutronLoadBalancerHealthMonitor(String uuid, NeutronLoadBalancerHealthMonitor delta) {
119         if (!neutronLoadBalancerHealthMonitorExists(uuid)) {
120             return false;
121         }
122         NeutronLoadBalancerHealthMonitor target = loadBalancerHealthMonitorDB.get(uuid);
123         return overwrite(target, delta);
124     }
125
126     @Override
127     public boolean neutronLoadBalancerHealthMonitorInUse(String loadBalancerHealthMonitorUUID) {
128         return !neutronLoadBalancerHealthMonitorExists(loadBalancerHealthMonitorUUID);
129     }
130
131     @Override
132     protected Healthmonitors toMd(String uuid) {
133         HealthmonitorsBuilder healthmonitorsBuilder = new HealthmonitorsBuilder();
134         healthmonitorsBuilder.setUuid(toUuid(uuid));
135         return healthmonitorsBuilder.build();
136     }
137
138     @Override
139     protected InstanceIdentifier<Healthmonitors> createInstanceIdentifier(
140             Healthmonitors healthMonitors) {
141         return InstanceIdentifier.create(Neutron.class)
142                 .child(Healthmonitor.class )
143                 .child(Healthmonitors.class, healthMonitors.getKey());
144     }
145
146     @Override
147     protected Healthmonitors toMd(NeutronLoadBalancerHealthMonitor healthMonitor) {
148         HealthmonitorsBuilder healthmonitorsBuilder = new HealthmonitorsBuilder();
149         healthmonitorsBuilder.setAdminStateUp(healthMonitor.getLoadBalancerHealthMonitorAdminStateIsUp());
150         if (healthMonitor.getLoadBalancerHealthMonitorDelay() != null) {
151             healthmonitorsBuilder.setDelay(Long.valueOf(healthMonitor.getLoadBalancerHealthMonitorDelay()));
152         }
153         if (healthMonitor.getLoadBalancerHealthMonitorExpectedCodes() != null) {
154             healthmonitorsBuilder.setExpectedCodes(healthMonitor.getLoadBalancerHealthMonitorExpectedCodes());
155         }
156         if (healthMonitor.getLoadBalancerHealthMonitorHttpMethod() != null) {
157             healthmonitorsBuilder.setHttpMethod(healthMonitor.getLoadBalancerHealthMonitorHttpMethod());
158         }
159         if (healthMonitor.getLoadBalancerHealthMonitorMaxRetries() != null) {
160             healthmonitorsBuilder.setMaxRetries(Integer.valueOf(healthMonitor.getLoadBalancerHealthMonitorMaxRetries()));
161         }
162         if (healthMonitor.getLoadBalancerHealthMonitorPools() != null) {
163             List<Uuid> listUuid = new ArrayList<Uuid>();
164             for (Neutron_ID neutron_id : healthMonitor.getLoadBalancerHealthMonitorPools()) {
165                 listUuid.add(toUuid(neutron_id.getID()));
166             }
167             healthmonitorsBuilder.setPools(listUuid);
168         }
169         if (healthMonitor.getLoadBalancerHealthMonitorTenantID() != null) {
170             healthmonitorsBuilder.setTenantId(toUuid(healthMonitor.getLoadBalancerHealthMonitorTenantID()));
171         }
172         if (healthMonitor.getLoadBalancerHealthMonitorTimeout() != null) {
173             healthmonitorsBuilder.setTimeout(Long.valueOf(healthMonitor.getLoadBalancerHealthMonitorTimeout()));
174         }
175         if (healthMonitor.getLoadBalancerHealthMonitorType() != null) {
176             healthmonitorsBuilder.setType(Type.valueOf(healthMonitor.getLoadBalancerHealthMonitorType()));
177         }
178         if (healthMonitor.getLoadBalancerHealthMonitorUrlPath() != null) {
179             healthmonitorsBuilder.setUrlPath(healthMonitor.getLoadBalancerHealthMonitorUrlPath());
180         }
181         if (healthMonitor.getLoadBalancerHealthMonitorID() != null) {
182             healthmonitorsBuilder.setUuid(toUuid(healthMonitor.getLoadBalancerHealthMonitorID()));
183         } else {
184             LOGGER.warn("Attempting to write neutron laod balancer health monitor without UUID");
185         }
186         return healthmonitorsBuilder.build();
187     }
188 }