2 * Copyright (c) 2015 Tata Consultancy Services and others. All rights reserved.
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.neutron.transcriber;
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
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;
30 public class NeutronVPNServiceInterface extends AbstractNeutronInterface<Vpnservice,NeutronVPNService> implements INeutronVPNServiceCRUD {
31 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNServiceInterface.class);
33 NeutronVPNServiceInterface(ProviderContext providerContext) {
34 super(providerContext);
38 public boolean neutronVPNServiceExists(String uuid) {
43 public NeutronVPNService getVPNService(String uuid) {
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));
56 LOGGER.debug("Exiting getVPNService, Found {} OpenStackVPNService", allVPNService.size());
57 List<NeutronVPNService> ans = new ArrayList<NeutronVPNService>();
58 ans.addAll(allVPNService);
63 public List<NeutronVPNService> getAllVPNService() {
68 public boolean addVPNService(NeutronVPNService input) {
73 public boolean removeVPNService(String uuid) {
78 public boolean updateVPNService(String uuid, NeutronVPNService delta) {
79 return update(uuid, delta);
83 public boolean neutronVPNServiceInUse(String uuid) {
87 protected NeutronVPNService fromMd(Vpnservice vpnService) {
88 NeutronVPNService answer = new NeutronVPNService();
89 if (vpnService.getName() != null) {
90 answer.setName(vpnService.getName());
92 if (vpnService.getTenantId() != null) {
93 answer.setTenantID(vpnService.getTenantId().getValue().replace("-",""));
95 if (vpnService.getStatus() != null) {
96 answer.setStatus(vpnService.getStatus());
98 if (vpnService.getDescr() != null) {
99 answer.setDescription(vpnService.getDescr());
101 if (vpnService.getSubnetId() != null) {
102 answer.setSubnetUUID(vpnService.getSubnetId().getValue());
104 if (vpnService.getRouterId() != null) {
105 answer.setRouterUUID(vpnService.getRouterId().getValue());
107 answer.setAdminStateUp(vpnService.isAdminStateUp());
108 if (vpnService.getUuid() != null) {
109 answer.setID(vpnService.getUuid().getValue());
115 protected Vpnservice toMd(NeutronVPNService vpnService) {
116 VpnserviceBuilder vpnServiceBuilder = new VpnserviceBuilder();
117 if (vpnService.getName() != null) {
118 vpnServiceBuilder.setName(vpnService.getName());
120 if (vpnService.getTenantID() != null) {
121 vpnServiceBuilder.setTenantId(toUuid(vpnService.getTenantID()));
123 if (vpnService.getStatus() != null) {
124 vpnServiceBuilder.setStatus(vpnService.getStatus());
126 if (vpnService.getDescription() != null) {
127 vpnServiceBuilder.setDescr(vpnService.getDescription());
129 if (vpnService.getSubnetUUID() != null) {
130 vpnServiceBuilder.setSubnetId(toUuid(vpnService.getSubnetUUID()));
132 if (vpnService.getRouterUUID() != null) {
133 vpnServiceBuilder.setRouterId(toUuid(vpnService.getRouterUUID()));
135 vpnServiceBuilder.setAdminStateUp(vpnService.getAdminStateUp());
136 if (vpnService.getID() != null) {
137 vpnServiceBuilder.setUuid(toUuid(vpnService.getID()));
139 LOGGER.warn("Attempting to write neutron vpnService without UUID");
141 return vpnServiceBuilder.build();
145 protected InstanceIdentifier<Vpnservice> createInstanceIdentifier(Vpnservice vpnService) {
146 return InstanceIdentifier.create(Neutron.class)
147 .child(VpnServices.class)
148 .child(Vpnservice.class, vpnService.getKey());
151 protected InstanceIdentifier<VpnServices> createInstanceIdentifier() {
152 return InstanceIdentifier.create(Neutron.class)
153 .child(VpnServices.class);
157 protected Vpnservice toMd(String uuid) {
158 VpnserviceBuilder vpnServiceBuilder = new VpnserviceBuilder();
159 vpnServiceBuilder.setUuid(toUuid(uuid));
160 return vpnServiceBuilder.build();
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);