Merge "transcriber: consolidate crud logic"
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNServiceInterface.java
1 /*
2  * Copyright (c) 2015 Tata Consultancy Services and others.  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.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
15 import java.util.Set;
16
17 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
18 import org.opendaylight.neutron.spi.INeutronVPNServiceCRUD;
19 import org.opendaylight.neutron.spi.NeutronVPNService;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnservices.attributes.VpnServices;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnservices.attributes.vpn.services.Vpnservice;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnservices.attributes.vpn.services.VpnserviceBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150325.Neutron;
24 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
25 import org.osgi.framework.BundleContext;
26 import org.osgi.framework.ServiceRegistration;
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
33     NeutronVPNServiceInterface(ProviderContext providerContext) {
34         super(providerContext);
35     }
36
37     @Override
38     public boolean neutronVPNServiceExists(String uuid) {
39         return exists(uuid);
40     }
41
42     @Override
43     public NeutronVPNService getVPNService(String uuid) {
44         return get(uuid);
45     }
46
47     @Override
48     public List<NeutronVPNService> getAll() {
49         Set<NeutronVPNService> allVPNService = new HashSet<NeutronVPNService>();
50         VpnServices services = readMd(createInstanceIdentifier());
51         if (services != null) {
52             for (Vpnservice service: services.getVpnservice()) {
53                 allVPNService.add(fromMd(service));
54             }
55         }
56         LOGGER.debug("Exiting getVPNService, Found {} OpenStackVPNService", allVPNService.size());
57         List<NeutronVPNService> ans = new ArrayList<NeutronVPNService>();
58         ans.addAll(allVPNService);
59         return ans;
60     }
61
62     @Override
63     public List<NeutronVPNService> getAllVPNService() {
64         return getAll();
65     }
66
67     @Override
68     public boolean addVPNService(NeutronVPNService input) {
69         return add(input);
70     }
71
72     @Override
73     public boolean removeVPNService(String uuid) {
74         return remove(uuid);
75     }
76
77     @Override
78     public boolean updateVPNService(String uuid, NeutronVPNService delta) {
79         return update(uuid, delta);
80     }
81
82     @Override
83     public boolean neutronVPNServiceInUse(String uuid) {
84         return !exists(uuid);
85     }
86
87     protected NeutronVPNService fromMd(Vpnservice vpnService) {
88         NeutronVPNService answer = new NeutronVPNService();
89         if (vpnService.getName() != null) {
90             answer.setName(vpnService.getName());
91         }
92         if (vpnService.getTenantId() != null) {
93             answer.setTenantID(vpnService.getTenantId().getValue().replace("-",""));
94         }
95         if (vpnService.getStatus() != null) {
96             answer.setStatus(vpnService.getStatus());
97         }
98         if (vpnService.getDescr() != null) {
99             answer.setDescription(vpnService.getDescr());
100         }
101         if (vpnService.getSubnetId() != null) {
102             answer.setSubnetUUID(vpnService.getSubnetId().getValue());
103         }
104         if (vpnService.getRouterId() != null) {
105             answer.setRouterUUID(vpnService.getRouterId().getValue());
106         }
107         answer.setAdminStateUp(vpnService.isAdminStateUp());
108         if (vpnService.getUuid() != null) {
109             answer.setID(vpnService.getUuid().getValue());
110         }
111         return answer;
112     }
113
114     @Override
115     protected Vpnservice toMd(NeutronVPNService vpnService) {
116         VpnserviceBuilder vpnServiceBuilder = new VpnserviceBuilder();
117         if (vpnService.getName() != null) {
118             vpnServiceBuilder.setName(vpnService.getName());
119         }
120         if (vpnService.getTenantID() != null) {
121             vpnServiceBuilder.setTenantId(toUuid(vpnService.getTenantID()));
122         }
123         if (vpnService.getStatus() != null) {
124             vpnServiceBuilder.setStatus(vpnService.getStatus());
125         }
126         if (vpnService.getDescription() != null) {
127             vpnServiceBuilder.setDescr(vpnService.getDescription());
128         }
129         if (vpnService.getSubnetUUID() != null) {
130             vpnServiceBuilder.setSubnetId(toUuid(vpnService.getSubnetUUID()));
131         }
132         if (vpnService.getRouterUUID() != null) {
133             vpnServiceBuilder.setRouterId(toUuid(vpnService.getRouterUUID()));
134         }
135         vpnServiceBuilder.setAdminStateUp(vpnService.getAdminStateUp());
136         if (vpnService.getID() != null) {
137             vpnServiceBuilder.setUuid(toUuid(vpnService.getID()));
138         } else {
139             LOGGER.warn("Attempting to write neutron vpnService without UUID");
140         }
141         return vpnServiceBuilder.build();
142     }
143
144     @Override
145     protected InstanceIdentifier<Vpnservice> createInstanceIdentifier(Vpnservice vpnService) {
146         return InstanceIdentifier.create(Neutron.class)
147                  .child(VpnServices.class)
148                  .child(Vpnservice.class, vpnService.getKey());
149     }
150
151     protected InstanceIdentifier<VpnServices> createInstanceIdentifier() {
152         return InstanceIdentifier.create(Neutron.class)
153                  .child(VpnServices.class);
154     }
155
156     @Override
157     protected Vpnservice toMd(String uuid) {
158         VpnserviceBuilder vpnServiceBuilder = new VpnserviceBuilder();
159         vpnServiceBuilder.setUuid(toUuid(uuid));
160         return vpnServiceBuilder.build();
161     }
162
163     public static void registerNewInterface(BundleContext context,
164                                             ProviderContext providerContext,
165                                             List<ServiceRegistration<?>> registrations) {
166         NeutronVPNServiceInterface neutronVPNServiceInterface = new NeutronVPNServiceInterface(providerContext);
167         ServiceRegistration<INeutronVPNServiceCRUD> neutronVPNServiceInterfaceRegistration = context.registerService(INeutronVPNServiceCRUD.class, neutronVPNServiceInterface, null);
168         if(neutronVPNServiceInterfaceRegistration != null) {
169             registrations.add(neutronVPNServiceInterfaceRegistration);
170         }
171     }
172 }