13:54:29 #startmeeting md-sal-query 13:54:29 Meeting started Fri Aug 8 13:54:29 2014 UTC. The chair is devinavery. Information about MeetBot at http://ci.openstack.org/meetbot.html. 13:54:29 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 13:54:29 The meeting name has been set to 'md_sal_query' 13:54:35 #chair regXboi 13:54:35 Current chairs: devinavery regXboi 13:54:54 #info Neel has the normalized node printing out as discussed on Aug 7th. 13:55:06 #info ex: Normalized Node is : ImmutableContainerNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toaster, value=[ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterStatus, value=up, attributes={}}, ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterManufacturer, value=Opendaylight, attributes={}} 13:55:06 , ImmutableLeaf 13:55:07 #link http://pastebin.com/mSX2kcHb 13:55:24 #info see link for full detail paste. 13:55:27 #info question is now how to access the members of the list in the value 13:55:43 #info devinavery thinks we should do type checking via instanceof 13:55:57 can we try it here? 13:56:59 We should be able to - should be quick. Neel - are you able to make the changes quickly to verify I am correct? According to eclipse you should be able to check / cast to Container Node 13:57:12 one second 13:58:16 And then call "getValue()" which returns an iterator of children. See org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode 14:00:36 its a raw data type 14:00:50 what type to put in ? 14:03:04 I would leave it as '?" for now. 14:03:15 okay 14:03:37 Just print out the values again. Likely it will be ImmutableLeafNode, ImmutableLeafNode etc 14:04:04 i compiling 14:04:13 just a sec 14:05:27 List of Leaf Nodes 14:05:35 [ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterStatus, value=up, attributes={}}, ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterManufacturer, value=Opendaylight, attributes={}}, ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterModelNumber, value=Model 1 - Binding Aware, attr 14:11:08 Ok. So now you can iterate those values doing a similar recursive check 14:16:36 got it the child nodes 14:17:07 Child node is :ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterStatus, value=up, attributes={}} Child node is :ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterManufacturer, value=Opendaylight, attributes={}} Child node is :ImmutableLeafNode{nodeIdentifier=(http://netconfcentral.org/ns/toaster?revision=2009-11-20)toasterModelN 14:17:22 that looks like we've got walking now 14:17:33 especially if we tie it back with recursion 14:17:33 regXboi: yup! 14:18:16 exactly. We can recursively check each value. I think the next steps are to do a loose mapping between the base node types the xpath interfaces. 14:19:25 We have a ContainerNode which contains children, and leafNodes which contain leaf values. Likely there is also a root for Lists which we can use to provide next sibling etc 14:21:04 con you write the #actions .. 14:21:08 can* 14:22:47 #info Neel found that we can use instance of to check the types of the values and convert them to ContainerNode, or LeafNode etc 14:23:15 devinavery: *So* happy to have you back :) 14:24:54 #action Next step is to wrap the NormalizedNode with the xpath interfaces to map the classes together. 14:27:44 #info for example a ContainerNode would map to children in the XPath interfaces. A ListNode would likely map to children / siblings and Leafs would map to Xpath Leafs etc. We should be able to map the two together now. 14:28:11 ListNode ? 14:28:24 the type is ImmutableLeafNode 14:29:17 Thats because the Toaster doesn't have a child list :) So we would need to mock up a list as well for testing purposes 14:30:06 wait 14:30:23 regXboi: yes? 14:30:30 if the Toaster had a child, wouldn't it also be a ContainerNode? 14:30:49 instead of a Leaf node? 14:30:58 If the Toaster had a child Container node, then yes 14:31:13 then we need an undo 14:31:13 My guess is that it would be a ContainerNode as well 14:31:21 then any other app we have uses the child container ? 14:31:26 #undo 14:31:26 Removing item from minutes: 14:32:04 #info for example a ContainerNode would map to children in the XPath interfaces. A leaf node would map to Xpath Leafs. 14:32:31 #info there is an outstanding question about sibling relationships 14:32:47 I don't think we get sibling relationships 14:33:08 if we did, we would have gotten something other than ImmutableLeafNodes 14:33:36 #info regXboi is concerned we may have to build sibling information on the fly :-( 14:33:45 Sibling relationships are likely implied. All children of the toaster are siblings. 14:34:13 I think we should test that 14:34:15 :) 14:34:38 so I think the next step is to wrap the container and leaf nodes 14:34:42 and then see where we get 14:34:50 right? 14:35:07 * regXboi pads off for more caffeine 14:35:40 Yes. That sounds like correct next step. We will need to see how Lists play into this in a bit. 14:40:38 #action modify previous action: wrap the container and leaf nodes into Xpath and test to see if lists get handled correctly automagically 14:41:40 anything else? 14:41:55 * regXboi thinks we've made good progress 14:43:05 wrapping in the sense ? 14:43:14 now we have dataContainerNode 14:43:32 we cast it into node/element ? 14:43:33 Not sure I understand your question Neel 14:45:03 or just initialize xpath on DataContainerNode 14:45:04 ? 14:48:45 devinavery,regXboi 14:48:46 ? 14:49:00 * regXboi thinking 14:49:09 I would create a new class which extends the xpath interfaces and takes the ContainerNode, LeafNode etc. And then delegate the calls to the xpath interface into the ContainerNodes etc 14:49:35 That is what I meant by "wrapping" the container nodes in the interfaces 14:50:10 yeah I think that's the best way forward 14:50:25 colindixon: notes are here 14:50:41 https://meetings.opendaylight.org/opendaylight-intern/2014/md_sal_query/opendaylight-intern-md_sal_query.2014-08-08-13.54.log.txt 14:50:45 regXboi: thanks 14:50:49 * colindixon looks 14:50:59 I don’t know what happened to this week 14:51:13 colindixon: before I forget - do you get the ACM communications? 14:51:44 not usually 14:51:47 or I should say _communications of ACM_ 14:52:16 go find the 8/2014 issue - there is a *very* interesting research highlight paper 14:52:25 "quantifying eventual consistency with PBS" 14:52:57 PBS == probabilistically bounded staleness 14:53:33 Neel_B: Does the next steps make sense to you? 14:53:50 * regXboi aplogoies for hijacking... back to regularly scheduled meeting 14:55:12 regXboi: No worries - I need to step away - but wanted to make sure Neel was all set 14:55:18 yeah 14:55:23 i guess 14:55:49 extend xpath interface to take container nodes instead of nodes 14:55:52 right ? 14:56:12 I would say it differently 14:56:18 Yup. That is a good summary. I would suggest you take a quick stab and upload your code for Monday 14:56:32 yeah 14:56:33 but if devinavery gets it I won't complain :) 14:56:34 i would 14:56:46 regXboi: please - saying things multiple ways are good :) 14:57:00 regXboi: your way please 14:57:22 I would have said it as create a new class that implements the xpath interface, takes the container node as part of the class constructor 14:57:46 and then the xpath interface methods are run against the container node that was passed in 14:57:53 regXboi: +1 14:59:26 Alright. I need to step away. Thanks all. Look forward to meeting Monday (same time I hope). Neel - if you get code updated before had please load it up and send an e-mail. We can pull it down and look at it 15:00:00 yeah i will 15:00:06 Thanks 15:00:11 and ... 15:00:19 code till now updated 15:00:27 #action regXboi to send email with minutes and next meeting 15:00:30 #endmeeting