2 * Copyright (c) 2014, 2015 Red Hat, Inc. 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 java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
17 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
18 import org.opendaylight.neutron.spi.INeutronLoadBalancerListenerCRUD;
19 import org.opendaylight.neutron.spi.NeutronLoadBalancerListener;
20 import org.opendaylight.neutron.spi.Neutron_ID;
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.constants.rev150712.ProtocolBase;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolHttp;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolHttps;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolTcp;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolTerminatedHttps;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.Listeners;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.listeners.Listener;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.listeners.ListenerBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
31 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
32 import org.osgi.framework.BundleContext;
33 import org.osgi.framework.ServiceRegistration;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
37 import com.google.common.collect.ImmutableBiMap;
39 public class NeutronLoadBalancerListenerInterface extends AbstractNeutronInterface<Listener, Listeners, NeutronLoadBalancerListener> implements INeutronLoadBalancerListenerCRUD {
40 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronLoadBalancerListenerInterface.class);
42 private static final ImmutableBiMap<Class<? extends ProtocolBase>,String> PROTOCOL_MAP
43 = new ImmutableBiMap.Builder<Class<? extends ProtocolBase>,String>()
44 .put(ProtocolHttp.class,"HTTP")
45 .put(ProtocolHttps.class,"HTTPS")
46 .put(ProtocolTcp.class,"TCP")
47 .put(ProtocolTerminatedHttps.class,"TERMINATED_HTTPS")
50 NeutronLoadBalancerListenerInterface(ProviderContext providerContext) {
51 super(providerContext);
55 public boolean neutronLoadBalancerListenerExists(String uuid) {
60 public NeutronLoadBalancerListener getNeutronLoadBalancerListener(String uuid) {
65 protected List<Listener> getDataObjectList(Listeners listeners) {
66 return listeners.getListener();
70 public List<NeutronLoadBalancerListener> getAllNeutronLoadBalancerListeners() {
75 public boolean addNeutronLoadBalancerListener(NeutronLoadBalancerListener input) {
80 public boolean removeNeutronLoadBalancerListener(String uuid) {
85 public boolean updateNeutronLoadBalancerListener(String uuid, NeutronLoadBalancerListener delta) {
86 return update(uuid, delta);
90 public boolean neutronLoadBalancerListenerInUse(String loadBalancerListenerUUID) {
91 return !exists(loadBalancerListenerUUID);
96 protected Listener toMd(String uuid) {
97 ListenerBuilder listenerBuilder = new ListenerBuilder();
98 listenerBuilder.setUuid(toUuid(uuid));
99 return listenerBuilder.build();
103 protected InstanceIdentifier<Listener> createInstanceIdentifier(
105 return InstanceIdentifier.create(Neutron.class)
106 .child(Listeners.class)
107 .child(Listener.class, listener.getKey());
111 protected InstanceIdentifier<Listeners> createInstanceIdentifier() {
112 return InstanceIdentifier.create(Neutron.class)
113 .child(Listeners.class);
117 protected Listener toMd(NeutronLoadBalancerListener listener) {
118 ListenerBuilder listenerBuilder = new ListenerBuilder();
119 listenerBuilder.setAdminStateUp(listener.getLoadBalancerListenerAdminStateIsUp());
120 if (listener.getNeutronLoadBalancerListenerConnectionLimit() != null) {
121 listenerBuilder.setConnectionLimit(listener.getNeutronLoadBalancerListenerConnectionLimit());
123 if (listener.getNeutronLoadBalancerListenerDefaultPoolID() != null) {
124 listenerBuilder.setDefaultPoolId(toUuid(listener.getNeutronLoadBalancerListenerDefaultPoolID()));
126 if (listener.getLoadBalancerListenerDescription() != null) {
127 listenerBuilder.setDescr(listener.getLoadBalancerListenerDescription());
129 if (listener.getNeutronLoadBalancerListenerLoadBalancerIDs() != null) {
130 List<Uuid> listLoadBalancers = new ArrayList<Uuid>();
131 for (Neutron_ID neutron_id : listener.getNeutronLoadBalancerListenerLoadBalancerIDs()) {
132 listLoadBalancers.add(toUuid(neutron_id.getID()));
134 listenerBuilder.setLoadbalancers(listLoadBalancers);
136 if (listener.getLoadBalancerListenerName() != null) {
137 listenerBuilder.setName(listener.getLoadBalancerListenerName());
139 if (listener.getNeutronLoadBalancerListenerProtocol() != null) {
140 ImmutableBiMap<String, Class<? extends ProtocolBase>> mapper =
141 PROTOCOL_MAP.inverse();
142 listenerBuilder.setProtocol((Class<? extends ProtocolBase>) mapper.get(listener.getNeutronLoadBalancerListenerProtocol()));
144 if (listener.getNeutronLoadBalancerListenerProtocolPort() != null) {
145 listenerBuilder.setProtocolPort(Integer.valueOf(listener.getNeutronLoadBalancerListenerProtocolPort()));
147 if (listener.getTenantID() != null) {
148 listenerBuilder.setTenantId(toUuid(listener.getTenantID()));
150 if (listener.getID() != null) {
151 listenerBuilder.setUuid(toUuid(listener.getID()));
153 LOGGER.warn("Attempting to write neutron load balancer listener without UUID");
155 return listenerBuilder.build();
158 protected NeutronLoadBalancerListener fromMd(Listener listener) {
159 NeutronLoadBalancerListener answer = new NeutronLoadBalancerListener();
160 if (listener.isAdminStateUp() != null) {
161 answer.setLoadBalancerListenerAdminStateIsUp(listener.isAdminStateUp());
163 if (listener.getConnectionLimit() != null) {
164 answer.setNeutronLoadBalancerListenerConnectionLimit(listener.getConnectionLimit());
166 if (listener.getDefaultPoolId() != null) {
167 answer.setNeutronLoadBalancerListenerDefaultPoolID(listener.getDefaultPoolId().getValue());
169 if (listener.getDescr() != null) {
170 answer.setLoadBalancerListenerDescription(listener.getDescr());
172 if (listener.getLoadbalancers() != null) {
173 List<Neutron_ID> list = new ArrayList<Neutron_ID>();
174 for (Uuid id : listener.getLoadbalancers()) {
175 list.add(new Neutron_ID(id.getValue()));
177 answer.setNeutronLoadBalancerListenerLoadBalancerIDs(list);
179 if (listener.getName() != null) {
180 answer.setLoadBalancerListenerName(listener.getName());
182 if (listener.getProtocol() != null) {
183 answer.setNeutronLoadBalancerListenerProtocol(PROTOCOL_MAP.get(listener.getProtocol()));
185 if (listener.getProtocolPort() != null) {
186 answer.setNeutronLoadBalancerListenerProtocolPort(String.valueOf(listener.getProtocolPort()));
188 if (listener.getTenantId() != null) {
189 answer.setTenantID(listener.getTenantId());
191 if (listener.getUuid() != null) {
192 answer.setID(listener.getUuid().getValue());
197 public static void registerNewInterface(BundleContext context,
198 ProviderContext providerContext,
199 List<ServiceRegistration<?>> registrations) {
200 NeutronLoadBalancerListenerInterface neutronLoadBalancerListenerInterface = new NeutronLoadBalancerListenerInterface(providerContext);
201 ServiceRegistration<INeutronLoadBalancerListenerCRUD> neutronLoadBalancerListenerInterfaceRegistration = context.registerService(INeutronLoadBalancerListenerCRUD.class, neutronLoadBalancerListenerInterface, null);
202 if(neutronLoadBalancerListenerInterfaceRegistration != null) {
203 registrations.add(neutronLoadBalancerListenerInterfaceRegistration);