Fix logger constant name and remove unused logger constants
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNServiceInterface.java
1 /*
2  * Copyright Tata Consultancy Services, 2015.  All rights reserved.
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.INeutronVPNServiceCRUD;
22 import org.opendaylight.neutron.spi.NeutronVPNService;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.VpnServices;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.vpn.services.VpnService;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.vpn.services.VpnServiceBuilder;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 public class NeutronVPNServiceInterface extends AbstractNeutronInterface<VpnService,NeutronVPNService> implements INeutronVPNServiceCRUD {
31     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNServiceInterface.class);
32     private ConcurrentMap<String, NeutronVPNService> VPNServiceDB = new ConcurrentHashMap<String, NeutronVPNService>();
33
34
35     NeutronVPNServiceInterface(ProviderContext providerContext) {
36         super(providerContext);
37     }
38
39     // this method uses reflection to update an object from it's delta.
40
41     private boolean overwrite(Object target, Object delta) {
42         Method[] methods = target.getClass().getMethods();
43
44         for (Method toMethod : methods) {
45             if (toMethod.getDeclaringClass().equals(target.getClass()) && toMethod.getName().startsWith("set")) {
46
47                 String toName = toMethod.getName();
48                 String fromName = toName.replace("set", "get");
49
50                 try {
51                     Method fromMethod = delta.getClass().getMethod(fromName);
52                     Object value = fromMethod.invoke(delta, (Object[]) null);
53                     if (value != null) {
54                         toMethod.invoke(target, value);
55                     }
56                 } catch (Exception e) {
57                     LOGGER.error(e.getMessage());
58                     return false;
59                 }
60             }
61         }
62         return true;
63     }
64
65     @Override
66     public boolean neutronVPNServiceExists(String uuid) {
67         return VPNServiceDB.containsKey(uuid);
68     }
69
70     @Override
71     public NeutronVPNService getVPNService(String uuid) {
72         if (!neutronVPNServiceExists(uuid)) {
73             LOGGER.debug("No VPNService Have Been Defined");
74             return null;
75         }
76         return VPNServiceDB.get(uuid);
77     }
78
79     @Override
80     public List<NeutronVPNService> getAllVPNService() {
81         Set<NeutronVPNService> allVPNService = new HashSet<NeutronVPNService>();
82         for (Entry<String, NeutronVPNService> entry : VPNServiceDB.entrySet()) {
83             NeutronVPNService VPNService = entry.getValue();
84             allVPNService.add(VPNService);
85         }
86         LOGGER.debug("Exiting getVPNService, Found {} OpenStackVPNService", allVPNService.size());
87         List<NeutronVPNService> ans = new ArrayList<NeutronVPNService>();
88         ans.addAll(allVPNService);
89         return ans;
90     }
91
92     @Override
93     public boolean addVPNService(NeutronVPNService input) {
94         if (neutronVPNServiceExists(input.getID())) {
95             return false;
96         }
97         VPNServiceDB.putIfAbsent(input.getID(), input);
98         addMd(input);
99         return true;
100     }
101
102     @Override
103     public boolean removeVPNService(String uuid) {
104         if (!neutronVPNServiceExists(uuid)) {
105             return false;
106         }
107         VPNServiceDB.remove(uuid);
108         removeMd(toMd(uuid));
109         return true;
110     }
111
112     @Override
113     public boolean updateVPNService(String uuid, NeutronVPNService delta) {
114         if (!neutronVPNServiceExists(uuid)) {
115             return false;
116         }
117         NeutronVPNService target = VPNServiceDB.get(uuid);
118         boolean rc = overwrite(target, delta);
119         if (rc) {
120             updateMd(VPNServiceDB.get(uuid));
121         }
122         return rc;
123     }
124
125     @Override
126     public boolean neutronVPNServiceInUse(String uuid) {
127         return !neutronVPNServiceExists(uuid);
128     }
129
130     @Override
131     protected VpnService toMd(NeutronVPNService vpnService) {
132         VpnServiceBuilder vpnServiceBuilder = new VpnServiceBuilder();
133         if (vpnService.getName() != null) {
134             vpnServiceBuilder.setName(vpnService.getName());
135         }
136         if (vpnService.getTenantID() != null) {
137             vpnServiceBuilder.setTenantId(toUuid(vpnService.getTenantID()));
138         }
139         if (vpnService.getStatus() != null) {
140             vpnServiceBuilder.setStatus(vpnService.getStatus());
141         }
142         if (vpnService.getDescription() != null) {
143             vpnServiceBuilder.setDescr(vpnService.getDescription());
144         }
145         if (vpnService.getSubnetUUID() != null) {
146             vpnServiceBuilder.setSubnetId(toUuid(vpnService.getSubnetUUID()));
147         }
148         if (vpnService.getRouterUUID() != null) {
149             vpnServiceBuilder.setRouterId(toUuid(vpnService.getRouterUUID()));
150         }
151         vpnServiceBuilder.setAdminStateUp(vpnService.getAdminStateUp());
152         if (vpnService.getID() != null) {
153             vpnServiceBuilder.setUuid(toUuid(vpnService.getID()));
154         } else {
155             LOGGER.warn("Attempting to write neutron vpnService without UUID");
156         }
157         return vpnServiceBuilder.build();
158     }
159
160     @Override
161     protected InstanceIdentifier<VpnService> createInstanceIdentifier(VpnService vpnService) {
162         return InstanceIdentifier.create(VpnServices.class).child(VpnService.class, vpnService.getKey());
163     }
164
165     @Override
166     protected VpnService toMd(String uuid) {
167         VpnServiceBuilder vpnServiceBuilder = new VpnServiceBuilder();
168         vpnServiceBuilder.setUuid(toUuid(uuid));
169         return vpnServiceBuilder.build();
170     }
171 }