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;
12 import java.util.ArrayList;
13 import java.util.List;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.neutron.spi.INeutronBgpvpnCRUD;
16 import org.opendaylight.neutron.spi.NeutronBgpvpn;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeBase;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeL2;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeL3;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.Bgpvpns;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.Bgpvpn;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.BgpvpnBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.bgpvpns.attributes.bgpvpns.BgpvpnKey;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 public final class NeutronBgpvpnInterface extends AbstractNeutronInterface<Bgpvpn, Bgpvpns, BgpvpnKey, NeutronBgpvpn>
29 implements INeutronBgpvpnCRUD {
30 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronBgpvpnInterface.class);
32 private static final ImmutableBiMap<Class<? extends BgpvpnTypeBase>,
33 String> BGPVPN_TYPE_MAP = new ImmutableBiMap.Builder<Class<? extends BgpvpnTypeBase>, String>()
34 .put(BgpvpnTypeL2.class, "l2").put(BgpvpnTypeL3.class, "l3").build();
36 NeutronBgpvpnInterface(DataBroker db) {
37 super(BgpvpnBuilder.class, db);
41 protected List<Bgpvpn> getDataObjectList(Bgpvpns bgpvpns) {
42 return bgpvpns.getBgpvpn();
46 protected NeutronBgpvpn fromMd(Bgpvpn bgpvpn) {
47 final NeutronBgpvpn result = new NeutronBgpvpn();
48 fromMdAdminAttributes(bgpvpn, result);
49 result.setAutoAggregate(bgpvpn.isAutoAggregate());
50 if (bgpvpn.getVnid() != null) {
51 result.setVnid(bgpvpn.getVnid());
53 if (bgpvpn.getType() != null) {
54 result.setType(BGPVPN_TYPE_MAP.get(bgpvpn.getType()));
56 if (bgpvpn.getTechnique() != null) {
57 result.setTechnique(bgpvpn.getTechnique());
59 if (bgpvpn.getRouteTargets() != null) {
60 final List<String> routeTargets = new ArrayList<String>();
61 for (final String routeTarget : bgpvpn.getRouteTargets()) {
62 routeTargets.add(routeTarget);
64 result.setRouteTargets(routeTargets);
66 if (bgpvpn.getImportTargets() != null) {
67 final List<String> importTargets = new ArrayList<String>();
68 for (final String importTarget : bgpvpn.getImportTargets()) {
69 importTargets.add(importTarget);
71 result.setImportTargets(importTargets);
73 if (bgpvpn.getExportTargets() != null) {
74 final List<String> exportTargets = new ArrayList<String>();
75 for (final String exportTarget : bgpvpn.getExportTargets()) {
76 exportTargets.add(exportTarget);
78 result.setExportTargets(exportTargets);
80 if (bgpvpn.getRouteDistinguishers() != null) {
81 final List<String> routeDistinguishers = new ArrayList<String>();
82 for (final String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
83 routeDistinguishers.add(routeDistinguisher);
85 result.setRouteDistinguishers(routeDistinguishers);
87 if (bgpvpn.getRouters() != null) {
88 final List<String> routers = new ArrayList<String>();
89 for (final Uuid router : bgpvpn.getRouters()) {
90 routers.add(router.getValue());
92 result.setRouters(routers);
94 if (bgpvpn.getNetworks() != null) {
95 final List<String> networks = new ArrayList<String>();
96 for (final Uuid network : bgpvpn.getNetworks()) {
97 networks.add(network.getValue());
99 result.setNetworks(networks);
105 protected Bgpvpn toMd(NeutronBgpvpn bgpvpn) {
106 final BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
108 toMdAdminAttributes(bgpvpn, bgpvpnBuilder);
109 if (bgpvpn.getAutoAggregate() != null) {
110 bgpvpnBuilder.setAutoAggregate(bgpvpn.getAutoAggregate());
112 if (bgpvpn.getVnid() != null) {
113 bgpvpnBuilder.setVnid(bgpvpn.getVnid());
115 if (bgpvpn.getType() != null) {
116 final ImmutableBiMap<String, Class<? extends BgpvpnTypeBase>> mapper = BGPVPN_TYPE_MAP.inverse();
117 bgpvpnBuilder.setType(mapper.get(bgpvpn.getType()));
119 if (bgpvpn.getTechnique() != null) {
120 bgpvpnBuilder.setTechnique(bgpvpn.getTechnique());
122 if (bgpvpn.getRouteTargets() != null) {
123 final List<String> routeTargets = new ArrayList<String>();
124 for (final String routeTarget : bgpvpn.getRouteTargets()) {
125 routeTargets.add(routeTarget);
127 bgpvpnBuilder.setRouteTargets(routeTargets);
129 if (bgpvpn.getImportTargets() != null) {
130 final List<String> importTargets = new ArrayList<String>();
131 for (final String importTarget : bgpvpn.getImportTargets()) {
132 importTargets.add(importTarget);
134 bgpvpnBuilder.setImportTargets(importTargets);
136 if (bgpvpn.getExportTargets() != null) {
137 final List<String> exportTargets = new ArrayList<String>();
138 for (final String exportTarget : bgpvpn.getExportTargets()) {
139 exportTargets.add(exportTarget);
141 bgpvpnBuilder.setExportTargets(exportTargets);
143 if (bgpvpn.getRouteDistinguishers() != null) {
144 final List<String> routeDistinguishers = new ArrayList<String>();
145 for (final String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
146 routeDistinguishers.add(routeDistinguisher);
148 bgpvpnBuilder.setRouteDistinguishers(routeDistinguishers);
150 if (bgpvpn.getRouters() != null) {
151 final List<Uuid> routers = new ArrayList<Uuid>();
152 for (final String router : bgpvpn.getRouters()) {
153 routers.add(toUuid(router));
155 bgpvpnBuilder.setRouters(routers);
157 if (bgpvpn.getNetworks() != null) {
158 final List<Uuid> networks = new ArrayList<Uuid>();
159 for (final String network : bgpvpn.getNetworks()) {
160 networks.add(toUuid(network));
162 bgpvpnBuilder.setNetworks(networks);
164 return bgpvpnBuilder.build();