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.List;
16 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
17 import org.opendaylight.neutron.spi.INeutronBgpvpnCRUD;
18 import org.opendaylight.neutron.spi.NeutronBgpvpn;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeBase;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeL2;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeL3;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.Bgpvpns;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.Bgpvpn;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.BgpvpnBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
31 public class NeutronBgpvpnInterface extends AbstractNeutronInterface<Bgpvpn, Bgpvpns, NeutronBgpvpn> implements INeutronBgpvpnCRUD {
32 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronBgpvpnInterface.class);
34 private static final ImmutableBiMap<Class<? extends BgpvpnTypeBase>,String> BGPVPN_TYPE_MAP
35 = new ImmutableBiMap.Builder<Class<? extends BgpvpnTypeBase>,String>()
36 .put(BgpvpnTypeL2.class,"l2")
37 .put(BgpvpnTypeL3.class,"l3")
40 NeutronBgpvpnInterface(DataBroker db) {
45 protected List<Bgpvpn> getDataObjectList(Bgpvpns bgpvpns) {
46 return bgpvpns.getBgpvpn();
50 public boolean inUse(String uuid) {
55 protected NeutronBgpvpn fromMd(Bgpvpn bgpvpn) {
56 final NeutronBgpvpn result = new NeutronBgpvpn();
57 result.setAdminStateUp(bgpvpn.isAdminStateUp());
58 result.setBgpvpnName(bgpvpn.getName());
59 result.setAutoAggregate(bgpvpn.isAutoAggregate());
60 result.setStatus(bgpvpn.getStatus());
61 result.setTenantID(bgpvpn.getTenantId());
62 result.setID(bgpvpn.getUuid().getValue());
63 if(bgpvpn.getVnid() != null) {
64 result.setVnid(bgpvpn.getVnid());
66 if(bgpvpn.getType() != null) {
67 result.setType(BGPVPN_TYPE_MAP.get(bgpvpn.getType()));
69 if(bgpvpn.getTechnique() != null) {
70 result.setTechnique(bgpvpn.getTechnique());
72 if (bgpvpn.getRouteTargets() != null) {
73 final List<String> routeTargets = new ArrayList<String>();
74 for( final String routeTarget : bgpvpn.getRouteTargets()) {
75 routeTargets.add(routeTarget);
77 result.setRouteTargets(routeTargets);
79 if (bgpvpn.getImportTargets() != null) {
80 final List<String> importTargets = new ArrayList<String>();
81 for( final String importTarget : bgpvpn.getImportTargets()) {
82 importTargets.add(importTarget);
84 result.setImportTargets(importTargets);
86 if (bgpvpn.getExportTargets() != null) {
87 final List<String> exportTargets = new ArrayList<String>();
88 for( final String exportTarget : bgpvpn.getExportTargets()) {
89 exportTargets.add(exportTarget);
91 result.setExportTargets(exportTargets);
93 if (bgpvpn.getRouteDistinguishers() != null) {
94 final List<String> routeDistinguishers = new ArrayList<String>();
95 for( final String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
96 routeDistinguishers.add(routeDistinguisher);
98 result.setRouteDistinguishers(routeDistinguishers);
100 if (bgpvpn.getRouters() != null) {
101 final List<String> routers = new ArrayList<String>();
102 for( final Uuid router : bgpvpn.getRouters()) {
103 routers.add(router.getValue());
105 result.setRouters(routers);
107 if (bgpvpn.getNetworks() != null) {
108 final List<String> networks = new ArrayList<String>();
109 for( final Uuid network : bgpvpn.getNetworks()) {
110 networks.add(network.getValue());
112 result.setNetworks(networks);
118 protected Bgpvpn toMd(NeutronBgpvpn bgpvpn) {
119 final BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
121 bgpvpnBuilder.setAdminStateUp(bgpvpn.getAdminStateUp());
122 if (bgpvpn.getBgpvpnName() != null) {
123 bgpvpnBuilder.setName(bgpvpn.getBgpvpnName());
125 if (bgpvpn.getAutoAggregate() != null) {
126 bgpvpnBuilder.setAutoAggregate(bgpvpn.getAutoAggregate());
128 if (bgpvpn.getStatus() != null) {
129 bgpvpnBuilder.setStatus(bgpvpn.getStatus());
131 if (bgpvpn.getVnid() != null) {
132 bgpvpnBuilder.setVnid(bgpvpn.getVnid());
134 if (bgpvpn.getType() != null) {
135 final ImmutableBiMap<String, Class<? extends BgpvpnTypeBase>> mapper = BGPVPN_TYPE_MAP.inverse();
136 bgpvpnBuilder.setType(mapper.get(bgpvpn.getType()));
138 if (bgpvpn.getTechnique() != null) {
139 bgpvpnBuilder.setTechnique(bgpvpn.getTechnique());
141 if (bgpvpn.getRouteTargets() != null) {
142 final List<String> routeTargets = new ArrayList<String>();
143 for( final String routeTarget : bgpvpn.getRouteTargets()) {
144 routeTargets.add(routeTarget);
146 bgpvpnBuilder.setRouteTargets(routeTargets);
148 if (bgpvpn.getImportTargets() != null) {
149 final List<String> importTargets = new ArrayList<String>();
150 for( final String importTarget : bgpvpn.getImportTargets()) {
151 importTargets.add(importTarget);
153 bgpvpnBuilder.setImportTargets(importTargets);
155 if (bgpvpn.getExportTargets() != null) {
156 final List<String> exportTargets = new ArrayList<String>();
157 for( final String exportTarget : bgpvpn.getExportTargets()) {
158 exportTargets.add(exportTarget);
160 bgpvpnBuilder.setExportTargets(exportTargets);
162 if (bgpvpn.getRouteDistinguishers() != null) {
163 final List<String> routeDistinguishers = new ArrayList<String>();
164 for( final String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
165 routeDistinguishers.add(routeDistinguisher);
167 bgpvpnBuilder.setRouteDistinguishers(routeDistinguishers);
169 if (bgpvpn.getRouters() != null) {
170 final List<Uuid> routers = new ArrayList<Uuid>();
171 for( final String router : bgpvpn.getRouters()) {
172 routers.add(toUuid(router));
174 bgpvpnBuilder.setRouters(routers);
176 if (bgpvpn.getNetworks() != null) {
177 final List<Uuid> networks = new ArrayList<Uuid>();
178 for( final String network : bgpvpn.getNetworks()) {
179 networks.add(toUuid(network));
181 bgpvpnBuilder.setNetworks(networks);
183 if (bgpvpn.getTenantID() != null) {
184 bgpvpnBuilder.setTenantId(toUuid(bgpvpn.getTenantID()));
186 if (bgpvpn.getID() != null) {
187 bgpvpnBuilder.setUuid(toUuid(bgpvpn.getID()));
189 LOGGER.warn("Attempting to write neutron bgpvpn without UUID");
191 return bgpvpnBuilder.build();
195 protected Bgpvpn toMd(String uuid) {
196 final BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
197 bgpvpnBuilder.setUuid(toUuid(uuid));
198 return bgpvpnBuilder.build();
202 protected InstanceIdentifier<Bgpvpn> createInstanceIdentifier(Bgpvpn bgpvpn) {
203 return InstanceIdentifier.create(Neutron.class)
204 .child(Bgpvpns.class)
205 .child(Bgpvpn.class, bgpvpn.getKey());
209 protected InstanceIdentifier<Bgpvpns> createInstanceIdentifier() {
210 return InstanceIdentifier.create(Neutron.class)
211 .child(Bgpvpns.class);