[OPNFLWPLUG-861] Error when try to create a new meter Created: 01/Mar/17  Updated: 27/Sep/21  Resolved: 05/Jun/17

Status: Resolved
Project: OpenFlowPlugin
Component/s: General
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Yrineu Felipe Rodrigues Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: All


External issue ID: 7887

 Description   

When we try to create a meter using a PUT REST call with the following body:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<meter xmlns="urn:opendaylight:flow:inventory">
<container-name>serro</container-name>
<flags>meter-burst</flags>
<barrier>true</barrier>
<meter-name>mymeter</meter-name>
<meter-band-headers>
<meter-band-header>
<band-id>0</band-id>
<dscp-remark-rate>3000</dscp-remark-rate>
<prec_level>14</prec_level>
<band-rate>200</band-rate>
<band-burst-size>10</band-burst-size>
<meter-band-types>
<flags>ofpmbt-drop</flags>
</meter-band-types>
</meter-band-header>
</meter-band-headers>
<meter-id>8</meter-id>
</meter>

PUT: http://172.16.11.13:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:10308256236310759730/flow-node-inventory:meter/8

The following error appear on karaf.log:

-------------------------------------------
2017-03-01 10:52:36,978 | ERROR | on-dispatcher-61 | AbstractService | 209 - org.opendaylight.openflowplugin.impl - 0.3.2.Boron-SR2 | Failed to build request for AddMeterInput [_containerName=ser
ro, _flags=MeterFlags [_meterKbps=false, _meterPktps=false, _meterBurst=true, _meterStats=false], _meterBandHeaders=MeterBandHeaders{getMeterBandHeader=[MeterBandHeader{getBandBurstSize=10, getBandId=BandId [_val
ue=0], getBandRate=200, getBandType=DscpRemark{getDscpRemarkRate=3000, getPrecLevel=14, augmentations={}}, getMeterBandTypes=MeterBandTypes{getFlags=MeterBandType [_ofpmbtDrop=true, _ofpmbtDscpRemark=false, _ofpm
btExperimenter=false], augmentations={}}, augmentations={}}], augmentations={}}, _meterId=MeterId [_value=8], _meterName=mymeter, _meterRef=MeterRef [_value=KeyedInstanceIdentifier

{targetType=interface org.openda ylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.re v130819.nodes.Node[key=NodeKey [_id=Uri [_value=openflow:10308256236310759730]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode, org.opendaylight.yang.gen.v1.urn.opendayli ght.flow.inventory.rev130819.meters.Meter[key=MeterKey [_meterId=MeterId [_value=8]]]]}

], _node=NodeRef [_value=KeyedInstanceIdentifier

{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory .rev130819.nodes.Node, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri [_value=open flow:10308256236310759730]]]]}

], _transactionUri=Uri [_value=DOM-4], _barrier=true, augmentation=[]], forfeiting request 13329
java.lang.ClassCastException: com.sun.proxy.$Proxy147 cannot be cast to org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor.getBandsFromSAL(MeterConvertor.java:86)[208:org.opendaylight.openflowplugin:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor.convert(MeterConvertor.java:186)[208:org.opendaylight.openflowplugin:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor.convert(MeterConvertor.java:58)[208:org.opendaylight.openflowplugin:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager.lambda$convert$2(ConvertorManager.java:94)[208:org.opendaylight.openflowplugin:0.3.2.Boron-SR2]
at java.util.Optional.map(Optional.java:215)[:1.8.0_111]
at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager.convert(ConvertorManager.java:94)[208:org.opendaylight.openflowplugin:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.impl.services.MeterService.buildRequest(MeterService.java:35)[209:org.opendaylight.openflowplugin.impl:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.impl.services.MeterService.buildRequest(MeterService.java:22)[209:org.opendaylight.openflowplugin.impl:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.impl.services.AbstractService.handleServiceCall(AbstractService.java:123)[209:org.opendaylight.openflowplugin.impl:0.3.2.Boron-SR2]
at org.opendaylight.openflowplugin.impl.services.SalMeterServiceImpl.addMeter(SalMeterServiceImpl.java:62)[209:org.opendaylight.openflowplugin.impl:0.3.2.Boron-SR2]
at org.opendaylight.yangtools.yang.binding.util.RpcMethodInvokerWithInput.invokeOn(RpcMethodInvokerWithInput.java:31)[73:org.opendaylight.mdsal.yang-binding:0.9.2.Boron-SR2]
at org.opendaylight.yangtools.yang.binding.util.AbstractMappedRpcInvoker.invokeRpc(AbstractMappedRpcInvoker.java:52)[73:org.opendaylight.mdsal.yang-binding:0.9.2.Boron-SR2]



 Comments   
Comment by Anil Vishnoi [ 02/Mar/17 ]

Hi Yrineu,

The meter body that you are installing is incorrect. Here is the correct one

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<meter xmlns="urn:opendaylight:flow:inventory">
<container-name>serro</container-name>
<flags>meter-burst</flags>
<barrier>true</barrier>
<meter-name>mymeter</meter-name>
<meter-band-headers>
<meter-band-header>
<band-id>0</band-id>
<dscp-remark-rate>3000</dscp-remark-rate>
<dscp-remark-burst-size>10</dscp-remark-burst-size>
<prec_level>14</prec_level>
<band-rate>200</band-rate>
<band-burst-size>10</band-burst-size>
<meter-band-types>
<flags>ofpmbt-dscp-remark</flags>
</meter-band-types>
</meter-band-header>
</meter-band-headers>
<meter-id>8</meter-id>
</meter>

There are two issues in the meter body that you are using.
(1) You are trying to install dscp-remark meter but you specified ofpmbt-drop meter in the meter-band-types flags

<meter-band-types>
<flags>ofpmbt-drop</flags>
</meter-band-types>

(2) You are using <flags>meter-burst</flags>, so you will have to define the burst size for dscp-remark meter as well.

Above body has both the changes, so if you try with it, it should work.

Comment by Jozef Bacigal [ 05/Jun/17 ]

Can we close it as solved ?

Comment by Yrineu Felipe Rodrigues [ 05/Jun/17 ]

(In reply to Jozef Bacigal from comment #2)
> Can we close it as solved ?

Yes, please, thanks!

Generated at Wed Feb 07 20:33:35 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.