2 * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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 com.google.common.collect.ImmutableBiMap;
13 import java.util.ArrayList;
14 import java.util.HashSet;
15 import java.util.List;
18 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
19 import org.opendaylight.neutron.spi.INeutronBgpvpnCRUD;
20 import org.opendaylight.neutron.spi.NeutronBgpvpn;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeBase;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeL2;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeL3;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.Bgpvpns;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.Bgpvpn;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.BgpvpnBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31 import org.osgi.framework.BundleContext;
32 import org.osgi.framework.ServiceRegistration;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
36 public class NeutronBgpvpnInterface extends AbstractNeutronInterface<Bgpvpn, Bgpvpns, NeutronBgpvpn> implements INeutronBgpvpnCRUD {
37 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronBgpvpnInterface.class);
39 private static final ImmutableBiMap<Class<? extends BgpvpnTypeBase>,String> BGPVPN_TYPE_MAP
40 = new ImmutableBiMap.Builder<Class<? extends BgpvpnTypeBase>,String>()
41 .put(BgpvpnTypeL2.class,"l2")
42 .put(BgpvpnTypeL3.class,"l3")
45 NeutronBgpvpnInterface(ProviderContext providerContext) {
46 super(providerContext);
50 protected List<Bgpvpn> getDataObjectList(Bgpvpns bgpvpns) {
51 return bgpvpns.getBgpvpn();
55 public boolean inUse(String uuid) {
60 protected NeutronBgpvpn fromMd(Bgpvpn bgpvpn) {
61 NeutronBgpvpn result = new NeutronBgpvpn();
62 result.setAdminStateUp(bgpvpn.isAdminStateUp());
63 result.setBgpvpnName(bgpvpn.getName());
64 result.setAutoAggregate(bgpvpn.isAutoAggregate());
65 result.setStatus(bgpvpn.getStatus());
66 result.setTenantID(bgpvpn.getTenantId());
67 result.setID(bgpvpn.getUuid().getValue());
68 if(bgpvpn.getVnid() != null) {
69 result.setVnid(bgpvpn.getVnid());
71 if(bgpvpn.getType() != null) {
72 result.setType(BGPVPN_TYPE_MAP.get(bgpvpn.getType()));
74 if(bgpvpn.getTechnique() != null) {
75 result.setTechnique(bgpvpn.getTechnique());
77 if (bgpvpn.getRouteTargets() != null) {
78 List<String> routeTargets = new ArrayList<String>();
79 for( String routeTarget : bgpvpn.getRouteTargets()) {
80 routeTargets.add(routeTarget);
82 result.setRouteTargets(routeTargets);
84 if (bgpvpn.getImportTargets() != null) {
85 List<String> importTargets = new ArrayList<String>();
86 for( String importTarget : bgpvpn.getImportTargets()) {
87 importTargets.add(importTarget);
89 result.setImportTargets(importTargets);
91 if (bgpvpn.getExportTargets() != null) {
92 List<String> exportTargets = new ArrayList<String>();
93 for( String exportTarget : bgpvpn.getExportTargets()) {
94 exportTargets.add(exportTarget);
96 result.setExportTargets(exportTargets);
98 if (bgpvpn.getRouteDistinguishers() != null) {
99 List<String> routeDistinguishers = new ArrayList<String>();
100 for( String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
101 routeDistinguishers.add(routeDistinguisher);
103 result.setRouteDistinguishers(routeDistinguishers);
105 if (bgpvpn.getRouters() != null) {
106 List<String> routers = new ArrayList<String>();
107 for( Uuid router : bgpvpn.getRouters()) {
108 routers.add(router.getValue());
110 result.setRouters(routers);
112 if (bgpvpn.getNetworks() != null) {
113 List<String> networks = new ArrayList<String>();
114 for( Uuid network : bgpvpn.getNetworks()) {
115 networks.add(network.getValue());
117 result.setNetworks(networks);
123 protected Bgpvpn toMd(NeutronBgpvpn bgpvpn) {
124 BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
126 bgpvpnBuilder.setAdminStateUp(bgpvpn.getAdminStateUp());
127 if (bgpvpn.getBgpvpnName() != null) {
128 bgpvpnBuilder.setName(bgpvpn.getBgpvpnName());
130 if (bgpvpn.getAutoAggregate() != null) {
131 bgpvpnBuilder.setAutoAggregate(bgpvpn.getAutoAggregate());
133 if (bgpvpn.getStatus() != null) {
134 bgpvpnBuilder.setStatus(bgpvpn.getStatus());
136 if (bgpvpn.getVnid() != null) {
137 bgpvpnBuilder.setVnid(bgpvpn.getVnid());
139 if (bgpvpn.getType() != null) {
140 ImmutableBiMap<String, Class<? extends BgpvpnTypeBase>> mapper = BGPVPN_TYPE_MAP.inverse();
141 bgpvpnBuilder.setType(mapper.get(bgpvpn.getType()));
143 if (bgpvpn.getTechnique() != null) {
144 bgpvpnBuilder.setTechnique(bgpvpn.getTechnique());
146 if (bgpvpn.getRouteTargets() != null) {
147 List<String> routeTargets = new ArrayList<String>();
148 for( String routeTarget : bgpvpn.getRouteTargets()) {
149 routeTargets.add(routeTarget);
151 bgpvpnBuilder.setRouteTargets(routeTargets);
153 if (bgpvpn.getImportTargets() != null) {
154 List<String> importTargets = new ArrayList<String>();
155 for( String importTarget : bgpvpn.getImportTargets()) {
156 importTargets.add(importTarget);
158 bgpvpnBuilder.setImportTargets(importTargets);
160 if (bgpvpn.getExportTargets() != null) {
161 List<String> exportTargets = new ArrayList<String>();
162 for( String exportTarget : bgpvpn.getExportTargets()) {
163 exportTargets.add(exportTarget);
165 bgpvpnBuilder.setExportTargets(exportTargets);
167 if (bgpvpn.getRouteDistinguishers() != null) {
168 List<String> routeDistinguishers = new ArrayList<String>();
169 for( String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
170 routeDistinguishers.add(routeDistinguisher);
172 bgpvpnBuilder.setRouteDistinguishers(routeDistinguishers);
174 if (bgpvpn.getRouters() != null) {
175 List<Uuid> routers = new ArrayList<Uuid>();
176 for( String router : bgpvpn.getRouters()) {
177 routers.add(toUuid(router));
179 bgpvpnBuilder.setRouters(routers);
181 if (bgpvpn.getNetworks() != null) {
182 List<Uuid> networks = new ArrayList<Uuid>();
183 for( String network : bgpvpn.getNetworks()) {
184 networks.add(toUuid(network));
186 bgpvpnBuilder.setNetworks(networks);
188 if (bgpvpn.getTenantID() != null) {
189 bgpvpnBuilder.setTenantId(toUuid(bgpvpn.getTenantID()));
191 if (bgpvpn.getID() != null) {
192 bgpvpnBuilder.setUuid(toUuid(bgpvpn.getID()));
194 LOGGER.warn("Attempting to write neutron bgpvpn without UUID");
196 return bgpvpnBuilder.build();
200 protected Bgpvpn toMd(String uuid) {
201 BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
202 bgpvpnBuilder.setUuid(toUuid(uuid));
203 return bgpvpnBuilder.build();
207 protected InstanceIdentifier<Bgpvpn> createInstanceIdentifier(Bgpvpn bgpvpn) {
208 return InstanceIdentifier.create(Neutron.class)
209 .child(Bgpvpns.class)
210 .child(Bgpvpn.class, bgpvpn.getKey());
214 protected InstanceIdentifier<Bgpvpns> createInstanceIdentifier() {
215 return InstanceIdentifier.create(Neutron.class)
216 .child(Bgpvpns.class);
219 public static void registerNewInterface(BundleContext context,
220 ProviderContext providerContext,
221 List<ServiceRegistration<?>> registrations) {
222 NeutronBgpvpnInterface neutronNetworkInterface = new NeutronBgpvpnInterface(providerContext);
223 ServiceRegistration<INeutronBgpvpnCRUD> neutronNetworkInterfaceRegistration = context.registerService(INeutronBgpvpnCRUD.class, neutronNetworkInterface, null);
224 if(neutronNetworkInterfaceRegistration != null) {
225 registrations.add(neutronNetworkInterfaceRegistration);