checkstyle: TypeName
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronLoadBalancerListenerInterface.java
1 /*
2  * Copyright (c) 2014, 2015 Red Hat, Inc. 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 import java.util.ArrayList;
13 import java.util.List;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.neutron.northbound.api.BadRequestException;
16 import org.opendaylight.neutron.spi.INeutronLoadBalancerListenerCRUD;
17 import org.opendaylight.neutron.spi.NeutronID;
18 import org.opendaylight.neutron.spi.NeutronLoadBalancerListener;
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.constants.rev150712.ProtocolBase;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolHttp;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolHttps;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolTcp;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolTerminatedHttps;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.Listeners;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.listeners.Listener;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.listeners.ListenerBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.listeners.ListenerKey;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 public final class NeutronLoadBalancerListenerInterface
33         extends AbstractNeutronInterface<Listener, Listeners, ListenerKey, NeutronLoadBalancerListener>
34         implements INeutronLoadBalancerListenerCRUD {
35     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronLoadBalancerListenerInterface.class);
36
37     private static final ImmutableBiMap<Class<? extends ProtocolBase>,
38             String> PROTOCOL_MAP = new ImmutableBiMap.Builder<Class<? extends ProtocolBase>, String>()
39                     .put(ProtocolHttp.class, "HTTP").put(ProtocolHttps.class, "HTTPS").put(ProtocolTcp.class, "TCP")
40                     .put(ProtocolTerminatedHttps.class, "TERMINATED_HTTPS").build();
41
42     NeutronLoadBalancerListenerInterface(DataBroker db) {
43         super(ListenerBuilder.class, db);
44     }
45
46     @Override
47     protected List<Listener> getDataObjectList(Listeners listeners) {
48         return listeners.getListener();
49     }
50
51     @Override
52     protected Listener toMd(NeutronLoadBalancerListener listener) {
53         final ListenerBuilder listenerBuilder = new ListenerBuilder();
54         toMdBaseAttributes(listener, listenerBuilder);
55         listenerBuilder.setAdminStateUp(listener.getLoadBalancerListenerAdminStateIsUp());
56         if (listener.getNeutronLoadBalancerListenerConnectionLimit() != null) {
57             listenerBuilder.setConnectionLimit(listener.getNeutronLoadBalancerListenerConnectionLimit());
58         }
59         if (listener.getNeutronLoadBalancerListenerDefaultPoolID() != null) {
60             listenerBuilder.setDefaultPoolId(toUuid(listener.getNeutronLoadBalancerListenerDefaultPoolID()));
61         }
62         if (listener.getNeutronLoadBalancerListenerLoadBalancerIDs() != null) {
63             final List<Uuid> listLoadBalancers = new ArrayList<Uuid>();
64             for (final NeutronID neutronId : listener.getNeutronLoadBalancerListenerLoadBalancerIDs()) {
65                 listLoadBalancers.add(toUuid(neutronId.getID()));
66             }
67             listenerBuilder.setLoadbalancers(listLoadBalancers);
68         }
69         if (listener.getNeutronLoadBalancerListenerProtocol() != null) {
70             final ImmutableBiMap<String, Class<? extends ProtocolBase>> mapper = PROTOCOL_MAP.inverse();
71             Class<? extends ProtocolBase> protocol = mapper.get(listener.getNeutronLoadBalancerListenerProtocol());
72             if (protocol != null) {
73                 listenerBuilder.setProtocol(protocol);
74             } else {
75                 throw new BadRequestException("Protocol {" + listener.getNeutronLoadBalancerListenerProtocol()
76                         + "} is not supported");
77             }
78         }
79         if (listener.getNeutronLoadBalancerListenerProtocolPort() != null) {
80             listenerBuilder.setProtocolPort(Integer.valueOf(listener.getNeutronLoadBalancerListenerProtocolPort()));
81         }
82         return listenerBuilder.build();
83     }
84
85     @Override
86     protected NeutronLoadBalancerListener fromMd(Listener listener) {
87         final NeutronLoadBalancerListener answer = new NeutronLoadBalancerListener();
88         fromMdBaseAttributes(listener, answer);
89         if (listener.isAdminStateUp() != null) {
90             answer.setLoadBalancerListenerAdminStateIsUp(listener.isAdminStateUp());
91         }
92         if (listener.getConnectionLimit() != null) {
93             answer.setNeutronLoadBalancerListenerConnectionLimit(listener.getConnectionLimit());
94         }
95         if (listener.getDefaultPoolId() != null) {
96             answer.setNeutronLoadBalancerListenerDefaultPoolID(listener.getDefaultPoolId().getValue());
97         }
98         if (listener.getLoadbalancers() != null) {
99             final List<NeutronID> list = new ArrayList<NeutronID>();
100             for (final Uuid id : listener.getLoadbalancers()) {
101                 list.add(new NeutronID(id.getValue()));
102             }
103             answer.setNeutronLoadBalancerListenerLoadBalancerIDs(list);
104         }
105         if (listener.getProtocol() != null) {
106             answer.setNeutronLoadBalancerListenerProtocol(PROTOCOL_MAP.get(listener.getProtocol()));
107         }
108         if (listener.getProtocolPort() != null) {
109             answer.setNeutronLoadBalancerListenerProtocolPort(String.valueOf(listener.getProtocolPort()));
110         }
111         return answer;
112     }
113 }