add blueprint wiring for neutron/transcriber
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronBgpvpnInterface.java
1 /*
2  * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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 com.google.common.collect.ImmutableBiMap;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
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;
30
31 public class NeutronBgpvpnInterface extends AbstractNeutronInterface<Bgpvpn, Bgpvpns, NeutronBgpvpn> implements INeutronBgpvpnCRUD {
32     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronBgpvpnInterface.class);
33
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")
38             .build();
39
40     NeutronBgpvpnInterface(DataBroker db) {
41         super(db);
42     }
43
44     @Override
45     protected List<Bgpvpn> getDataObjectList(Bgpvpns bgpvpns) {
46         return bgpvpns.getBgpvpn();
47     }
48
49     @Override
50     public boolean inUse(String uuid) {
51         return !exists(uuid);
52     }
53
54     @Override
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());
65         }
66         if(bgpvpn.getType() != null) {
67             result.setType(BGPVPN_TYPE_MAP.get(bgpvpn.getType()));
68         }
69         if(bgpvpn.getTechnique() != null) {
70             result.setTechnique(bgpvpn.getTechnique());
71         }
72         if (bgpvpn.getRouteTargets() != null) {
73             final List<String> routeTargets = new ArrayList<String>();
74             for( final String routeTarget : bgpvpn.getRouteTargets()) {
75                 routeTargets.add(routeTarget);
76             }
77             result.setRouteTargets(routeTargets);
78         }
79         if (bgpvpn.getImportTargets() != null) {
80             final List<String> importTargets = new ArrayList<String>();
81             for( final String importTarget : bgpvpn.getImportTargets()) {
82                 importTargets.add(importTarget);
83             }
84             result.setImportTargets(importTargets);
85         }
86         if (bgpvpn.getExportTargets() != null) {
87             final List<String> exportTargets = new ArrayList<String>();
88             for( final String exportTarget : bgpvpn.getExportTargets()) {
89                 exportTargets.add(exportTarget);
90             }
91             result.setExportTargets(exportTargets);
92         }
93         if (bgpvpn.getRouteDistinguishers() != null) {
94             final List<String> routeDistinguishers = new ArrayList<String>();
95             for( final String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
96                 routeDistinguishers.add(routeDistinguisher);
97             }
98             result.setRouteDistinguishers(routeDistinguishers);
99         }
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());
104             }
105             result.setRouters(routers);
106         }
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());
111             }
112             result.setNetworks(networks);
113         }
114         return result;
115     }
116
117     @Override
118     protected Bgpvpn toMd(NeutronBgpvpn bgpvpn) {
119         final BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
120
121         bgpvpnBuilder.setAdminStateUp(bgpvpn.getAdminStateUp());
122         if (bgpvpn.getBgpvpnName() != null) {
123             bgpvpnBuilder.setName(bgpvpn.getBgpvpnName());
124         }
125         if (bgpvpn.getAutoAggregate() != null) {
126             bgpvpnBuilder.setAutoAggregate(bgpvpn.getAutoAggregate());
127         }
128         if (bgpvpn.getStatus() != null) {
129             bgpvpnBuilder.setStatus(bgpvpn.getStatus());
130         }
131         if (bgpvpn.getVnid() != null) {
132             bgpvpnBuilder.setVnid(bgpvpn.getVnid());
133         }
134         if (bgpvpn.getType() != null) {
135             final ImmutableBiMap<String, Class<? extends BgpvpnTypeBase>> mapper = BGPVPN_TYPE_MAP.inverse();
136             bgpvpnBuilder.setType(mapper.get(bgpvpn.getType()));
137         }
138         if (bgpvpn.getTechnique() != null) {
139             bgpvpnBuilder.setTechnique(bgpvpn.getTechnique());
140         }
141         if (bgpvpn.getRouteTargets() != null) {
142             final List<String> routeTargets = new ArrayList<String>();
143             for( final String routeTarget : bgpvpn.getRouteTargets()) {
144                 routeTargets.add(routeTarget);
145             }
146             bgpvpnBuilder.setRouteTargets(routeTargets);
147         }
148         if (bgpvpn.getImportTargets() != null) {
149             final List<String> importTargets = new ArrayList<String>();
150             for( final String importTarget : bgpvpn.getImportTargets()) {
151                 importTargets.add(importTarget);
152             }
153             bgpvpnBuilder.setImportTargets(importTargets);
154         }
155         if (bgpvpn.getExportTargets() != null) {
156             final List<String> exportTargets = new ArrayList<String>();
157             for( final String exportTarget : bgpvpn.getExportTargets()) {
158                 exportTargets.add(exportTarget);
159             }
160             bgpvpnBuilder.setExportTargets(exportTargets);
161         }
162         if (bgpvpn.getRouteDistinguishers() != null) {
163             final List<String> routeDistinguishers = new ArrayList<String>();
164             for( final String routeDistinguisher : bgpvpn.getRouteDistinguishers()) {
165                 routeDistinguishers.add(routeDistinguisher);
166             }
167             bgpvpnBuilder.setRouteDistinguishers(routeDistinguishers);
168         }
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));
173             }
174             bgpvpnBuilder.setRouters(routers);
175         }
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));
180             }
181             bgpvpnBuilder.setNetworks(networks);
182         }
183         if (bgpvpn.getTenantID() != null) {
184             bgpvpnBuilder.setTenantId(toUuid(bgpvpn.getTenantID()));
185         }
186         if (bgpvpn.getID() != null) {
187             bgpvpnBuilder.setUuid(toUuid(bgpvpn.getID()));
188         } else {
189             LOGGER.warn("Attempting to write neutron bgpvpn without UUID");
190         }
191         return bgpvpnBuilder.build();
192     }
193
194     @Override
195     protected Bgpvpn toMd(String uuid) {
196         final BgpvpnBuilder bgpvpnBuilder = new BgpvpnBuilder();
197         bgpvpnBuilder.setUuid(toUuid(uuid));
198         return bgpvpnBuilder.build();
199     }
200
201     @Override
202     protected InstanceIdentifier<Bgpvpn> createInstanceIdentifier(Bgpvpn bgpvpn) {
203         return InstanceIdentifier.create(Neutron.class)
204                 .child(Bgpvpns.class)
205                 .child(Bgpvpn.class, bgpvpn.getKey());
206     }
207
208     @Override
209     protected InstanceIdentifier<Bgpvpns> createInstanceIdentifier() {
210         return InstanceIdentifier.create(Neutron.class)
211                 .child(Bgpvpns.class);
212     }
213 }