X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=transcriber%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fneutron%2Ftranscriber%2FNeutronMeteringLabelRuleInterface.java;h=24417dff1f7b9b64529064a5b3fdcb23c06a8836;hb=3669678e0a3d1ffe863c5c4c02987de53cb1c4d9;hp=67a15acd0d1fec93b719d64a6476a350ab8a95d2;hpb=cdff382fd59e1fbed0526d2f6f597c9a32733efa;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 67a15acd0..24417dff1 100644 --- a/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronMeteringLabelRuleInterface.java +++ b/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronMeteringLabelRuleInterface.java @@ -8,7 +8,6 @@ package org.opendaylight.neutron.transcriber; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -21,48 +20,35 @@ import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderCo 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.constants.rev160807.DirectionBase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev160807.DirectionEgress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev160807.DirectionIngress; 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; +import com.google.common.collect.ImmutableBiMap; + public class NeutronMeteringLabelRuleInterface extends AbstractNeutronInterface implements INeutronMeteringLabelRuleCRUD { - private static final Logger logger = LoggerFactory.getLogger(NeutronMeteringLabelRuleInterface.class); + private static final Logger LOGGER = LoggerFactory.getLogger(NeutronMeteringLabelRuleInterface.class); private ConcurrentMap meteringLabelRuleDB = new ConcurrentHashMap(); - NeutronMeteringLabelRuleInterface(ProviderContext providerContext) { - super(providerContext); - } - - // this method uses reflection to update an object from it's delta. - - private boolean overwrite(Object target, Object delta) { - Method[] methods = target.getClass().getMethods(); - - for (Method toMethod : methods) { - if (toMethod.getDeclaringClass().equals(target.getClass()) && toMethod.getName().startsWith("set")) { + private static final ImmutableBiMap,String> DIRECTION_MAP + = new ImmutableBiMap.Builder,String>() + .put(DirectionEgress.class,"egress") + .put(DirectionIngress.class,"ingress") + .build(); - String toName = toMethod.getName(); - String fromName = toName.replace("set", "get"); - try { - Method fromMethod = delta.getClass().getMethod(fromName); - Object value = fromMethod.invoke(delta, (Object[]) null); - if (value != null) { - toMethod.invoke(target, value); - } - } catch (Exception e) { - logger.error(e.getMessage()); - return false; - } - } - } - return true; + NeutronMeteringLabelRuleInterface(ProviderContext providerContext) { + super(providerContext); } // IfNBMeteringLabelRuleCRUD methods @@ -87,7 +73,7 @@ public class NeutronMeteringLabelRuleInterface extends AbstractNeutronInterface< NeutronMeteringLabelRule meteringLabelRule = entry.getValue(); allMeteringLabelRules.add(meteringLabelRule); } - logger.debug("Exiting getAllMeteringLabelRules, Found {} OpenStackMeteringLabelRules", + LOGGER.debug("Exiting getAllMeteringLabelRules, Found {} OpenStackMeteringLabelRules", allMeteringLabelRules.size()); List ans = new ArrayList(); ans.addAll(allMeteringLabelRules); @@ -140,23 +126,24 @@ public class NeutronMeteringLabelRuleInterface extends AbstractNeutronInterface< } @Override - protected MeteringRule toMd(NeutronMeteringLabelRule meteringLableRule) { + protected MeteringRule toMd(NeutronMeteringLabelRule meteringLabelRule) { MeteringRuleBuilder meteringRuleBuilder = new MeteringRuleBuilder(); - if (meteringLableRule.getMeteringLabelRuleLabelID() != null) { - meteringRuleBuilder.setId((toUuid(meteringLableRule.getMeteringLabelRuleLabelID()))); + if (meteringLabelRule.getMeteringLabelRuleLabelID() != null) { + meteringRuleBuilder.setId((toUuid(meteringLabelRule.getMeteringLabelRuleLabelID()))); } - if (meteringLableRule.getMeteringLabelRuleUUID() != null) { - meteringRuleBuilder.setMeteringLabelId(toUuid(meteringLableRule.getMeteringLabelRuleUUID())); + if (meteringLabelRule.getMeteringLabelRuleUUID() != null) { + meteringRuleBuilder.setMeteringLabelId(toUuid(meteringLabelRule.getMeteringLabelRuleUUID())); } - if (meteringLableRule.getMeteringLabelRuleDirection() != null) { - meteringRuleBuilder.setDirection((MeteringRuleAttrs.Direction.valueOf(meteringLableRule - .getMeteringLabelRuleDirection()))); + if (meteringLabelRule.getMeteringLabelRuleDirection() != null) { + ImmutableBiMap> mapper = + DIRECTION_MAP.inverse(); + meteringRuleBuilder.setDirection((Class) mapper.get(meteringLabelRule.getMeteringLabelRuleDirection())); } - if (meteringLableRule.getMeteringLabelRuleRemoteIPPrefix() != null) { - IpAddress ipAddress = new IpAddress(meteringLableRule.getMeteringLabelRuleRemoteIPPrefix().toCharArray()); + if (meteringLabelRule.getMeteringLabelRuleRemoteIPPrefix() != null) { + IpAddress ipAddress = new IpAddress(meteringLabelRule.getMeteringLabelRuleRemoteIPPrefix().toCharArray()); meteringRuleBuilder.setRemoteIpPrefix(ipAddress); } - meteringRuleBuilder.setExcluded(meteringLableRule.getMeteringLabelRuleExcluded()); + meteringRuleBuilder.setExcluded(meteringLabelRule.getMeteringLabelRuleExcluded()); return meteringRuleBuilder.build(); } @@ -166,4 +153,14 @@ public class NeutronMeteringLabelRuleInterface extends AbstractNeutronInterface< meteringRuleBuilder.setId((toUuid(uuid))); return meteringRuleBuilder.build(); } + + public static void registerNewInterface(BundleContext context, + ProviderContext providerContext, + List> registrations) { + NeutronMeteringLabelRuleInterface neutronMeteringLabelRuleInterface = new NeutronMeteringLabelRuleInterface(providerContext); + ServiceRegistration neutronMeteringLabelRuleInterfaceRegistration = context.registerService(INeutronMeteringLabelRuleCRUD.class, neutronMeteringLabelRuleInterface, null); + if(neutronMeteringLabelRuleInterfaceRegistration != null) { + registrations.add(neutronMeteringLabelRuleInterfaceRegistration); + } + } }