2 * Copyright (c) 2015 IBM Corporation 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.INeutronMeteringLabelCRUD;
19 import org.opendaylight.neutron.spi.NeutronMeteringLabel;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.metering.labels.attributes.MeteringLabels;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.metering.labels.attributes.metering.labels.MeteringLabel;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.metering.labels.attributes.metering.labels.MeteringLabelBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150325.Neutron;
24 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
25 import org.osgi.framework.BundleContext;
26 import org.osgi.framework.ServiceRegistration;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
30 public class NeutronMeteringLabelInterface extends AbstractNeutronInterface<MeteringLabel, NeutronMeteringLabel> implements INeutronMeteringLabelCRUD {
31 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronMeteringLabelInterface.class);
33 NeutronMeteringLabelInterface(ProviderContext providerContext) {
34 super(providerContext);
37 // IfNBMeteringLabelCRUD methods
40 public boolean neutronMeteringLabelExists(String uuid) {
45 public NeutronMeteringLabel getNeutronMeteringLabel(String uuid) {
50 public List<NeutronMeteringLabel> getAll() {
51 Set<NeutronMeteringLabel> allMeteringLabels = new HashSet<NeutronMeteringLabel>();
52 MeteringLabels labels = readMd(createInstanceIdentifier());
54 for (MeteringLabel label: labels.getMeteringLabel()) {
55 allMeteringLabels.add(fromMd(label));
58 LOGGER.debug("Exiting getAllMeteringLabels, Found {} OpenStackMeteringLabels", allMeteringLabels.size());
59 List<NeutronMeteringLabel> ans = new ArrayList<NeutronMeteringLabel>();
60 ans.addAll(allMeteringLabels);
65 public List<NeutronMeteringLabel> getAllNeutronMeteringLabels() {
70 public boolean addNeutronMeteringLabel(NeutronMeteringLabel input) {
75 public boolean removeNeutronMeteringLabel(String uuid) {
80 public boolean updateNeutronMeteringLabel(String uuid, NeutronMeteringLabel delta) {
81 return update(uuid, delta);
85 public boolean neutronMeteringLabelInUse(String netUUID) {
86 return !exists(netUUID);
90 protected InstanceIdentifier<MeteringLabel> createInstanceIdentifier(
92 return InstanceIdentifier.create(Neutron.class)
93 .child(MeteringLabels.class)
94 .child(MeteringLabel.class,item.getKey());
97 protected InstanceIdentifier<MeteringLabels> createInstanceIdentifier() {
98 return InstanceIdentifier.create(Neutron.class)
99 .child(MeteringLabels.class);
103 protected MeteringLabel toMd(NeutronMeteringLabel meteringLabel) {
104 MeteringLabelBuilder meteringLabelBuilder = new MeteringLabelBuilder();
105 if (meteringLabel.getMeteringLabelName()!=null) {
106 meteringLabelBuilder.setName(meteringLabel.getMeteringLabelName());
108 if (meteringLabel.getMeteringLabelDescription()!=null) {
109 meteringLabelBuilder.setDescription(meteringLabel.getMeteringLabelDescription());
111 if (meteringLabel.getMeteringLabelTenantID()!=null) {
112 meteringLabelBuilder.setTenantId(toUuid(meteringLabel.getMeteringLabelTenantID()));
114 if (meteringLabel.getID()!=null) {
115 meteringLabelBuilder.setUuid(toUuid(meteringLabel.getID()));
117 return meteringLabelBuilder.build();
120 protected NeutronMeteringLabel fromMd(MeteringLabel label) {
121 NeutronMeteringLabel answer = new NeutronMeteringLabel();
122 if (label.getName() != null) {
123 answer.setMeteringLabelName(label.getName());
125 if (label.getDescription() != null) {
126 answer.setMeteringLabelDescription(label.getName());
128 //todo: remove '-' chars as tenant id doesn't use them
129 if (label.getTenantId() != null) {
130 answer.setMeteringLabelTenantID(label.getTenantId().getValue());
132 if (label.getUuid() != null) {
133 answer.setID(label.getUuid().getValue());
139 protected MeteringLabel toMd(String uuid) {
140 MeteringLabelBuilder meteringLabelBuilder = new MeteringLabelBuilder();
141 meteringLabelBuilder.setUuid(toUuid(uuid));
142 return meteringLabelBuilder.build();
145 public static void registerNewInterface(BundleContext context,
146 ProviderContext providerContext,
147 List<ServiceRegistration<?>> registrations) {
148 NeutronMeteringLabelInterface neutronMeteringLabelInterface = new NeutronMeteringLabelInterface(providerContext);
149 ServiceRegistration<INeutronMeteringLabelCRUD> neutronMeteringLabelInterfaceRegistration = context.registerService(INeutronMeteringLabelCRUD.class, neutronMeteringLabelInterface, null);
150 if(neutronMeteringLabelInterfaceRegistration != null) {
151 registrations.add(neutronMeteringLabelInterfaceRegistration);