[OPNFLWPLUG-47] Modify Flow is not working with REST CLIENT Created: 24/Jan/14  Updated: 27/Sep/21  Resolved: 07/Feb/14

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

Type: Improvement
Reporter: jyoti porwal Assignee: sunny malhotra
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC


Issue Links:
Blocks
is blocked by YANGTOOLS-78 Node add by uses statement has a Conf... Resolved

 Description   

URL-

http://localhost:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/3/flow/133

Request body

<flow xmlns="urn:opendaylight:flow:inventory">
<barrier>false</barrier>
<cookie>10</cookie>
<cookie_mask>10</cookie_mask>
<flags>SEND_FLOW_REM</flags>
<flow-name>FooXf10</flow-name>
<hard-timeout>0</hard-timeout>
<id>133</id>
<idle-timeout>0</idle-timeout>
<installHw>false</installHw>
<instructions>
<instruction>
<order>1</order>
<apply-actions>
<action>
<order>0</order>
<push-pbb-action>
<ethernet-type>35047</ethernet-type>
</push-pbb-action>
</action>
</apply-actions>
</instruction>
</instructions>
<match>
<ethernet-match>
<ethernet-type>
<type>2048</type>
</ethernet-type>
</ethernet-match>
<ipv4-destination>10.0.0.1/24</ipv4-destination>
</match>
<priority>2</priority>
<strict>false</strict>
<table_id>3</table_id>
</flow>

Response headers-

500 Internal Server Error

Logs in controller-

014-01-24 15:55:32.002 IST [pool-23-thread-4] ERROR o.o.c.m.s.c.i.service.TwoPhaseCommit - Transaction: DOM-3203 Request Commit failed
java.lang.IllegalArgumentException: Supplied composite node is not configurational.
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) ~[bundlefile:na]
at org.opendaylight.yangtools.yang.util.YangDataOperations.checkConfigurational(YangDataOperations.java:51) ~[na:na]
at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:30) ~[na:na]
at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:79) ~[na:na]
at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:209) ~[na:na]
at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.mergeData(SchemaAwareDataStoreAdapter.java:159) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeConfigurationData(SchemaAwareDataStoreAdapter.java:318) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeConfigurationData(SchemaAwareDataStoreAdapter.java:289) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.AbstractDataModification.putConfigurationData(AbstractDataModification.java:70) ~[bundlefile:na]
at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.prepareMergedTransaction(SchemaAwareDataStoreAdapter.java:176) ~[na:na]
at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.requestCommit(SchemaAwareDataStoreAdapter.java:115) ~[na:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:76) [bundlefile:na]
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) [bundlefile:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_45]
at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
2014-01-24 15:55:34.572 IST [Timer-4] INFO o.o.o.o.m.c.s.ModelDrivenSwitchImpl - TransmitPacket - TransmitPacketInput [_cookie=null, _egress=NodeConnectorRef [_value=InstanceIdentifier [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=openflow:1]]], org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector[key=NodeConnectorKey [_id=Uri [_value=openflow:1:1]]]]]], _ingress=null, _payload=[1, -128, -62, 0, 0, 14, -46, -106, -13, -101, -38, 113, -120, -52, 2, 7, 4, 0, 0, 0, 0, 0, 1, 4, 2, 7, 49, 6, 2, 0, 120, 10, 10, 111, 112, 101, 110, 102, 108, 111, 119, 58, 49, -2, 16, 0, 38, -31, 0, 111, 112, 101, 110, 102, 108, 111, 119, 58, 49, 58



 Comments   
Comment by sunny malhotra [ 25/Jan/14 ]

I am able to reproduce the bug with following steps :

1.Create a flow using a "PUT" REST call (URL : http://localhost:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/3/flow/133) , providing the necessary parameters in request-body.

request-body :
<flow xmlns="urn:opendaylight:flow:inventory">
<barrier>false</barrier>
<cookie>10</cookie>
<cookie_mask>10</cookie_mask>
<flow-name>FooXf10</flow-name>
<hard-timeout>0</hard-timeout>
<id>133</id>
<idle-timeout>0</idle-timeout>
<installHw>false</installHw>
<instructions>
<instruction>
<order>1</order>
<apply-actions>
<action>
<order>0</order>
<push-pbb-action>
<ethernet-type>35047</ethernet-type>
</push-pbb-action>
</action>
</apply-actions>
</instruction>
</instructions>
<match>
<ethernet-match>
<ethernet-type>
<type>2048</type>
</ethernet-type>
</ethernet-match>
<ipv4-destination>10.0.0.1/24</ipv4-destination>
</match>
<priority>2</priority>
<strict>false</strict>
<table_id>3</table_id>
</flow>

2.Modify the flow created in step1 , again by using the same "PUT" REST call(URL : http://localhost:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/3/flow/133 ) , with additional <flags> parameter.

request-body:
<flow xmlns="urn:opendaylight:flow:inventory">
<barrier>false</barrier>
<cookie>10</cookie>
<cookie_mask>10</cookie_mask>
<flags>SEND_FLOW_REM</flags>
<flow-name>FooXf10</flow-name>
<hard-timeout>0</hard-timeout>
<id>133</id>
<idle-timeout>0</idle-timeout>
<installHw>false</installHw>
<instructions>
<instruction>
<order>1</order>
<apply-actions>
<action>
<order>0</order>
<push-pbb-action>
<ethernet-type>35047</ethernet-type>
</push-pbb-action>
</action>
</apply-actions>
</instruction>
</instructions>
<match>
<ethernet-match>
<ethernet-type>
<type>2048</type>
</ethernet-type>
</ethernet-match>
<ipv4-destination>10.0.0.1/24</ipv4-destination>
</match>
<priority>2</priority>
<strict>false</strict>
<table_id>3</table_id>
</flow>

The output of step2 is 500 Internel Server Error .

Logs of Controller :

014-01-24 15:55:32.002 IST [pool-23-thread-4] ERROR o.o.c.m.s.c.i.service.TwoPhaseCommit - Transaction: DOM-3203 Request Commit failed
java.lang.IllegalArgumentException: Supplied composite node is not configurational.
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) ~[bundlefile:na]......

Please verify whether the steps we are folllowing are correct.

Comment by sunny malhotra [ 27/Jan/14 ]

Pulled-in the latest code today.Not able to replicate anymore.
Seems the bug is fixed.

Comment by sunny malhotra [ 07/Feb/14 ]

=======================
To: Partha Datta <partha.datta@tcs.com>
From: Jyoti Porwal <jyoti.porwal@ericsson.com>
Date: 02/07/2014 03:53PM
cc: Sunny Malhotra <sunny.malhotra@tcs.com>, Prasanna Huddar <prasanna.huddar@ericsson.com>
Subject: RE: OpenDaylight: OPNFLWPLUG-47 - Modify Flow is not working with REST CLIENT
=======================

Hi Partha,

OPNFLWPLUG-47 is resolved.

Regards,
Jyoti Porwal

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