X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=transcriber%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fneutron%2Ftranscriber%2FNeutronMeteringLabelRuleInterface.java;h=225ce18d9f8a31e6ba88277d319ab85b47f17e10;hb=7c7c1101a92c4d1034b9763777d82dc29fe84a83;hp=e0e04e1f1770b9b41d65d4d940b54272ec0377b9;hpb=41afc942526b4d644d1ce590954cca31dc59d495;p=neutron.git diff --git a/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronMeteringLabelRuleInterface.java b/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronMeteringLabelRuleInterface.java index e0e04e1f1..225ce18d9 100644 --- a/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronMeteringLabelRuleInterface.java +++ b/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronMeteringLabelRuleInterface.java @@ -1,154 +1,77 @@ /* - * Copyright IBM Corporation, 2015. All rights reserved. + * Copyright (c) 2015 IBM Corporation and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.neutron.transcriber; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; +import javax.inject.Inject; +import javax.inject.Singleton; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.neutron.spi.INeutronMeteringLabelRuleCRUD; import org.opendaylight.neutron.spi.NeutronMeteringLabelRule; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.MeteringRuleAttrs; -import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.metering.rules.attributes.MeteringRules; -import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.metering.rules.attributes.metering.rules.MeteringRule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev141002.metering.rules.attributes.metering.rules.MeteringRuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150325.Neutron; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class NeutronMeteringLabelRuleInterface extends AbstractNeutronInterface +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.NeutronUtils.DirectionMapper; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev150712.metering.rules.attributes.MeteringRules; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev150712.metering.rules.attributes.metering.rules.MeteringRule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev150712.metering.rules.attributes.metering.rules.MeteringRuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.metering.rev150712.metering.rules.attributes.metering.rules.MeteringRuleKey; +import org.ops4j.pax.cdi.api.OsgiServiceProvider; + +@Singleton +@OsgiServiceProvider(classes = INeutronMeteringLabelRuleCRUD.class) +public final class NeutronMeteringLabelRuleInterface + extends AbstractNeutronInterface implements INeutronMeteringLabelRuleCRUD { - private static final Logger LOGGER = LoggerFactory.getLogger(NeutronMeteringLabelRuleInterface.class); - private ConcurrentMap meteringLabelRuleDB = new ConcurrentHashMap(); - NeutronMeteringLabelRuleInterface(ProviderContext providerContext) { - super(providerContext); + @Inject + public NeutronMeteringLabelRuleInterface(DataBroker db) { + super(MeteringRuleBuilder.class, db); } // IfNBMeteringLabelRuleCRUD methods - - @Override - public boolean neutronMeteringLabelRuleExists(String uuid) { - return meteringLabelRuleDB.containsKey(uuid); - } - - @Override - public NeutronMeteringLabelRule getNeutronMeteringLabelRule(String uuid) { - if (!neutronMeteringLabelRuleExists(uuid)) { - return null; - } - return meteringLabelRuleDB.get(uuid); - } - @Override - public List getAllNeutronMeteringLabelRules() { - Set allMeteringLabelRules = new HashSet(); - for (Entry entry : meteringLabelRuleDB.entrySet()) { - NeutronMeteringLabelRule meteringLabelRule = entry.getValue(); - allMeteringLabelRules.add(meteringLabelRule); - } - LOGGER.debug("Exiting getAllMeteringLabelRules, Found {} OpenStackMeteringLabelRules", - allMeteringLabelRules.size()); - List ans = new ArrayList(); - ans.addAll(allMeteringLabelRules); - return ans; + protected List getDataObjectList(MeteringRules rules) { + return rules.getMeteringRule(); } @Override - public boolean addNeutronMeteringLabelRule(NeutronMeteringLabelRule input) { - if (neutronMeteringLabelRuleExists(input.getMeteringLabelRuleUUID())) { - return false; + protected MeteringRule toMd(NeutronMeteringLabelRule meteringLabelRule) { + final MeteringRuleBuilder meteringRuleBuilder = new MeteringRuleBuilder(); + toMdIds(meteringLabelRule, meteringRuleBuilder); + if (meteringLabelRule.getMeteringLabelRuleLabelID() != null) { + meteringRuleBuilder.setMeteringLabelId(toUuid(meteringLabelRule.getMeteringLabelRuleLabelID())); } - meteringLabelRuleDB.putIfAbsent(input.getMeteringLabelRuleUUID(), input); - // TODO: add code to find INeutronMeteringLabelRuleAware services and - // call newtorkCreated on them - return true; - } - - @Override - public boolean removeNeutronMeteringLabelRule(String uuid) { - if (!neutronMeteringLabelRuleExists(uuid)) { - return false; - } - meteringLabelRuleDB.remove(uuid); - // TODO: add code to find INeutronMeteringLabelRuleAware services and - // call newtorkDeleted on them - return true; - } - - @Override - public boolean updateNeutronMeteringLabelRule(String uuid, NeutronMeteringLabelRule delta) { - if (!neutronMeteringLabelRuleExists(uuid)) { - return false; + if (meteringLabelRule.getMeteringLabelRuleDirection() != null) { + meteringRuleBuilder.setDirection( + DirectionMapper.get(meteringLabelRule.getMeteringLabelRuleDirection())); } - NeutronMeteringLabelRule target = meteringLabelRuleDB.get(uuid); - return overwrite(target, delta); - } - - @Override - public boolean neutronMeteringLabelRuleInUse(String netUUID) { - if (!neutronMeteringLabelRuleExists(netUUID)) { - return true; + if (meteringLabelRule.getMeteringLabelRuleRemoteIpPrefix() != null) { + final IpPrefix ipPrefix = new IpPrefix( + meteringLabelRule.getMeteringLabelRuleRemoteIpPrefix().toCharArray()); + meteringRuleBuilder.setRemoteIpPrefix(ipPrefix); } - return false; - } - - @Override - protected InstanceIdentifier createInstanceIdentifier(MeteringRule item) { - return InstanceIdentifier.create(Neutron.class).child(MeteringRules.class).child(MeteringRule.class); - + meteringRuleBuilder.setExcluded(meteringLabelRule.getMeteringLabelRuleExcluded()); + return meteringRuleBuilder.build(); } @Override - protected MeteringRule toMd(NeutronMeteringLabelRule meteringLableRule) { - MeteringRuleBuilder meteringRuleBuilder = new MeteringRuleBuilder(); - if (meteringLableRule.getMeteringLabelRuleLabelID() != null) { - meteringRuleBuilder.setId((toUuid(meteringLableRule.getMeteringLabelRuleLabelID()))); + protected NeutronMeteringLabelRule fromMd(MeteringRule rule) { + final NeutronMeteringLabelRule answer = new NeutronMeteringLabelRule(); + fromMdIds(rule, answer); + if (rule.getMeteringLabelId() != null) { + answer.setMeteringLabelRuleLabelID(rule.getMeteringLabelId().getValue()); } - if (meteringLableRule.getMeteringLabelRuleUUID() != null) { - meteringRuleBuilder.setMeteringLabelId(toUuid(meteringLableRule.getMeteringLabelRuleUUID())); + if (rule.getDirection() != null) { + answer.setMeteringLabelRuleDirection(DirectionMapper.getName(rule.getDirection())); } - if (meteringLableRule.getMeteringLabelRuleDirection() != null) { - meteringRuleBuilder.setDirection((MeteringRuleAttrs.Direction.valueOf(meteringLableRule - .getMeteringLabelRuleDirection()))); - } - if (meteringLableRule.getMeteringLabelRuleRemoteIPPrefix() != null) { - IpAddress ipAddress = new IpAddress(meteringLableRule.getMeteringLabelRuleRemoteIPPrefix().toCharArray()); - meteringRuleBuilder.setRemoteIpPrefix(ipAddress); - } - meteringRuleBuilder.setExcluded(meteringLableRule.getMeteringLabelRuleExcluded()); - return meteringRuleBuilder.build(); - } - - @Override - protected MeteringRule toMd(String uuid) { - MeteringRuleBuilder meteringRuleBuilder = new MeteringRuleBuilder(); - meteringRuleBuilder.setId((toUuid(uuid))); - return meteringRuleBuilder.build(); - } - - public static void registerNewInterface(BundleContext context, - ProviderContext providerContext, - List> registrations) throws Exception { - NeutronMeteringLabelRuleInterface neutronMeteringLabelRuleInterface = new NeutronMeteringLabelRuleInterface(providerContext); - ServiceRegistration neutronMeteringLabelRuleInterfaceRegistration = context.registerService(INeutronMeteringLabelRuleCRUD.class, neutronMeteringLabelRuleInterface, null); - if(neutronMeteringLabelRuleInterfaceRegistration != null) { - registrations.add(neutronMeteringLabelRuleInterfaceRegistration); + if (rule.getRemoteIpPrefix() != null) { + answer.setMeteringLabelRuleRemoteIpPrefix(new String(rule.getRemoteIpPrefix().getValue())); } + answer.setMeteringLabelRuleExcluded(rule.isExcluded()); + return answer; } }