15:04:30 #startmeeting Marconi 15:04:31 Meeting started Tue Feb 18 15:04:30 2014 UTC and is due to finish in 60 minutes. The chair is kgriffs. Information about MeetBot at http://wiki.debian.org/MeetBot. 15:04:32 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 15:04:34 erm, you've to start the meeting 15:04:34 yaaay 15:04:35 The meeting name has been set to 'marconi' 15:04:35 :D 15:04:41 w00t 15:04:42 #link https://wiki.openstack.org/wiki/Meetings/Marconi#Agenda 15:04:51 guntss gungts gungts 15:04:51 we have a lovely schedule today 15:04:55 yes 15:05:02 I'm sure we will get done early. ;) 15:05:09 o/ 15:05:23 #topic roll call 15:05:28 o/ 15:05:30 o/ 15:05:34 o/ 15:05:35 \o/ 15:05:36 o/ 15:05:39 o/ - for real now 15:05:40 \o/ 15:05:53 \o/ 15:05:58 * alcabrera notes that flaper87 is present twice, no, thrice 15:05:59 ~o~ 15:06:11 mpanetta: you break dancing ? 15:06:18 I would like to take this opportunity and introduce Sriram! 15:06:21 ;) 15:06:33 welcome back Sriram!! 15:06:41 w00t 15:06:54 hey guys! :) 15:07:08 wilkommen! 15:07:16 Sriram joined us full-time recently and is no stranger to Marconi. He spent some time while he was interning with us. 15:07:51 * kgriffs thinks he came back just for the jokes in #openstack-marconi 15:08:06 :D 15:08:17 yeah, was a good time. Looking forward to getting back into the groove again :D 15:08:18 sriram: excellent, glad to have you back, man 15:08:40 ...without that pesky "college" thing getting in the way this time. ;) 15:08:55 sriram: welcome :D 15:09:00 kgriffs: haha :) 15:09:00 #topic Atlanta Summit 15:09:08 flaper87: thank you! :) 15:09:22 so, summit 15:09:39 talks? 15:09:44 yup - that's a thing, and it's coming soon-ish 15:09:52 we've submitted (afaik) two sessions 15:10:02 alcabrera: so, the talk and workshop were submitted? 15:10:06 yup! 15:10:08 ok 15:10:18 we're all set 15:10:19 Marconi: Please Leave a Message and Hands-on w/ Marconi 15:10:20 cool! 15:10:21 we now need votes 15:10:27 I looked at the latest draft on the etherpad and it seems like the talk is going to be all about teh features? 15:10:32 and prepare to whatever is comming 15:11:00 kgriffs: that's mostly the case - :what's the future look like?: 15:11:02 I can spread the word for votes here in Atlanta. 15:11:06 It would be cool if we could somehow show the features in action or translated to real-world use cases rather than just spending 40 min hand-waving 15:11:31 anyway, that's my $0.02 15:11:39 TBH, I'm kinda wishing that just the workshop will get accepted. The reason is that I think that'll be our best chance to showcase marconi 15:11:39 kgriffs says that for every summit :) 15:11:48 building a model supply chain using the queues would be super cool :) 15:11:49 I haven't checked yet, but has voting opened already? 15:11:58 kgriffs: nop 15:12:00 #note Marconi: Please Leave a Message - chock full of demo power 15:12:12 we can still change the abstract 15:12:13 AFAIK 15:12:48 ok, I guess we can see what happens. If both are accepted, Hopefully the talk will get scheduled before the workshop and can serve for advertising 15:13:03 I hope so, too. That'd be ideal. 15:13:21 Maybe we could showcase a real customer. 15:13:34 ametts: I think that would be great for the talk! 15:14:05 megan_w: ^^^ 15:14:54 kgriffs: I will talk to Megan about this 15:15:01 awesome! 15:15:11 ok, so it looks like several of us will need to carve out some time to work on content once the votes are in, assuming *something* is accepted. 15:15:21 +1 15:15:24 +1 15:15:27 +1 15:15:38 That's what May 11th is for :) 15:15:39 #action balajiiyer to follow up with Megan and get us a case study for the summit talk 15:15:48 ametts: lol 15:15:59 ametts: it could also be May 16th, it depends on when the talk is scheduled 15:16:02 :D 15:16:04 lol 15:16:09 flaper87: Good point. 15:16:37 moving on... 15:16:40 design sessions 15:16:47 everyone be thinking about topics for those 15:16:53 I have 15:16:59 I would love to host a design session on notifications 15:17:06 +1 15:17:07 balajiiyer: +1 15:17:20 yeah that would be great. 15:17:40 we had talked about proposing a cross-team session on versioning APIs 15:17:47 I think June is a great time to start the work on notifications 15:18:00 kgriffs: I've heard that probably that will happen 15:18:16 kgriffs: in that case the session won't count as Marconi's but cross-project 15:18:16 also, flaper87 you probably want to do one around your work with API architecture, schemas, and stuff 15:18:32 flaper87: yep! 15:18:34 yeah and I'd like to add queue flavors 15:18:45 ah yes 15:18:49 queue flavors will be exciting! 15:18:53 queue flavors? 15:18:59 I strongly believe we should kick the work there off 15:19:52 sriram: it's a declarative way to handle message storage. If you declare a queue with a 'fast' flavor, it might be the case that a redis-like backend will be chosen for you. 15:19:55 sriram: TL;DR: Allow to create different queues based on flavor tags 15:20:00 similarly for 'durable', etc 15:20:14 whoa, this is awesome! :D 15:20:15 it's applicable in a sharded context 15:20:24 :) 15:20:30 ok, those are the 2 I'd like to proposa and perhaps talk about fi they're accepted 15:21:31 propose* 15:21:43 kgriffs: knock knock ? 15:21:54 is my internet connection working? 15:22:00 yes 15:22:05 kk, sounds like we have some good ideas. Let's keep brainstorming and everyone feel free to submit session topics when that opens 15:22:34 +1 - let's talk more design sessions when those open up 15:22:58 +1 15:22:59 #topic SQL Alchemy 15:23:26 so, lovely progress here, thanks to the efforts of flaper87 and ykaplan! 15:23:34 awesome 15:23:47 we have one patch in the review queue for each of the needed controllers 15:23:53 shards, catalogue, claims, messages, queues 15:23:59 they all need some work, a little more love 15:24:01 but we're close 15:24:03 very close 15:24:14 balajiiyer: I'd appreciate your reviews there too, esp. to sanity-check schema and stuff since you have SQL ninja skills 15:24:46 kgriffs: ok 15:24:53 rock on 15:25:18 alcabrera: any help/action you guys need besides reviews? 15:26:01 hmm 15:26:07 reviews, mostly 15:26:11 ok 15:26:14 I think that'll take care of the bulk of the work 15:26:17 #link https://review.openstack.org/#/q/status:open+project:openstack/marconi+topic:bp/sql-storage-driver,n,z 15:26:18 yeah 15:26:19 for reference 15:26:23 let's git-r-done 15:26:31 #note sql-driver needs reviews : all controllers are in the review queue 15:26:36 so, the work is pretty much done, ykaplan is making sure unittets are all set 15:26:37 #note great progress 15:26:50 alcabrera: isn't it #info ? 15:26:54 hmmm 15:26:58 I think you're right 15:27:00 :P 15:27:04 :D 15:27:16 #info sql-driver needs reviews : all controllers are in the review queue 15:27:20 #info great progress 15:27:26 * alcabrera felt notable today 15:27:29 #topic Pecan evaluation 15:27:38 balajiiyer, alcabrera 15:27:39 oh goodness - so much to say here 15:27:46 balajiiyer: want to open this up for us? 15:27:46 * flaper87 takes his lightsaber off 15:28:05 alcabrera: you start off with your comments, I will support it with the doc I have written :) 15:28:06 * kgriffs turns on his implanted objectifier 15:28:28 kk 15:28:30 well... 15:28:32 hmm... 15:28:54 So balajiiyer and I gave it a strong effort to see how we might support marconi under pecan 15:29:11 It was painful, to say the least 15:29:21 Objectively describing those pains is the challenging part 15:29:41 I think, probably, the one thing that made it difficult to provide a modular solution, was pecan's object-based routing system 15:29:45 is it kinda like how some people just "get" recursion, but other's don't, based on how your brain works? 15:30:00 15:30:10 That might be part of the case. 15:30:13 we should also compare the number of github stars ;) 15:30:26 And working with an object-based routing system might be okay over the long run 15:30:37 and it even *seemed* like it would help modularization 15:30:39 except 15:30:40 malini: that might imply that more people's brains work like Falcon than Pecans. ;) 15:30:58 the way to establish a RootController (which handles '/') 15:31:01 * kgriffs shuts up and listens 15:31:05 doesn't allow for arguments to be passed in 15:31:07 so 15:31:12 things like storage, configuration, and caching 15:31:17 alcabrera: did you guys push this code somewhere? 15:31:18 thsoe suddenly become globals 15:31:26 balajiiyer: link to repo? 15:31:47 can I ask something? or do you want to finish up your comments first ? 15:31:55 https://github.com/balajiiyer/marconi/tree/Pecan 15:32:01 alcabrera: can those not be somehow attached to per-request context? 15:32:21 alcabrera: At this point I'm mainly curious about: 15:32:24 flaper87: I'll answer kgriffs' question then you go. :) 15:32:26 so 15:32:36 kgriffs: no. Request objects are globally imported. 15:32:37 I suppose they could via a hook or something, but probably hacky 15:32:41 from pecan import request 15:32:41 This is a WIP, queues controller is fully implemented, working on messages controller 15:33:05 flaper87: what are your thoughts? 15:33:11 1. What did it mean in terms of implementation details to support Pecan? How much did the API implementation had to change and whether it was improved or not by using Pecan? 15:33:51 hmmmm 15:33:51 It didnt look like an improvement to me. 15:34:06 so, the way it was headed, it would've been a single file implementation 15:34:06 2. Do we depend on all the serialization methods / objects provided by pecan? 15:34:35 That implies WSME, nicht? 15:34:59 flaper87: pecan doesnt offer serialization natively, will use WSME for that 15:35:16 re 1: there's no support for PATCH or HEAD 15:35:17 balajiiyer: yeah, sorry, I meant to ask if we depend on WSME objects 15:35:23 pecan has json support: http://pecan.readthedocs.org/en/latest/pecan_jsonify.html?highlight=json#module-pecan.jsonify 15:35:26 you don't need to use wxme 15:35:27 wsme 15:35:32 dhellmann: awesome, thanks 15:35:42 so, that's something we can improve in the implementation 15:35:47 Pecan's json serialization effort with jsonify might work for small projects 15:35:47 in case you guys didn't know that 15:36:09 balajiiyer: if you have your own serializer, that works too 15:36:18 I'm just correcting factual misstatements 15:36:26 dhellmann: thanks! 15:36:31 dhellmann: got it, thanks 15:37:08 what else... 15:37:10 ah 15:37:17 alcabrera: balajiiyer I think you guys should talk to ryanpetrello, dhellmann and see if the implementation you have can be improved 15:37:17 I haven't quite figured out how to represent particular queue objects 15:37:24 so, /v1/queues/{queue} 15:37:33 I really want to make sure we're doing things right with Pecan 15:37:43 +1 15:37:45 alcabrera: did you look at the way ceilometer manages meters? 15:38:06 dhellmann: no 15:38:11 I've glanced at the ceilometer project, so far 15:38:42 alcabrera: check out the MetersController and MeterController in http://git.openstack.org/cgit/openstack/ceilometer/tree/ceilometer/api/controllers/v2.py 15:39:06 alcabrera: the _lookup() method in MetersController was working around a bug which has since been fixed in pecan, so that's not needed 15:39:10 ah, overriding _lookup 15:39:19 that makes sense 15:39:29 you don't actually need that, you can use get() or get_one() 15:39:51 I see. 15:40:11 it's definitely a very different way of thinking than with falcon, so that's some relearning to do. :) 15:40:53 I'm surprised that 15:41:00 balajiiyer: you hadn't done much with falcon before, so is it less "relearning" and just "learning" for you? 15:41:01 All of ceilometer's API seems to be implemented in a single file 15:41:12 alcabrera: it's fairly small 15:41:20 but that's not a requirement, it just worked out that way 15:41:41 kgriffs: awhile back, I shared w/ you a subclass of the Pecan routing that I'd written 15:41:51 that uses Falcon's style of routing rather than object dispatch 15:42:10 do you recall that link? I believe it was a gist, and am trying to find it 15:42:17 hmmm 15:42:20 * kgriffs goes to look 15:42:26 if it's the object dispatch routing that bothers you all, it's not so difficult to do it another way 15:42:43 kgriffs: yeah, "learning" part was mostly trying to figure out how to fit it in the context of Marconi. 15:43:09 as for the comments on global configuration, global req+resp objects, that *is* an intended feature of pecan 15:43:17 and it uses threadlocals, in much the same way that e.g., flask does 15:43:27 hmmm 15:43:59 so it's different from the approach that e.g., pyramid uses, where you have req and resp arguments passed to every controller 15:44:16 why is it an intended feature of pecan, to expose those things as globals, especially req/resp? 15:44:28 mostly for convenience 15:44:36 because of the @expose() serialization approach in pecan 15:44:42 ryanpetrello: ok, so sounds like that approach is baked into Pecan's philosophy, which reflects the broader Python community camps of global/thread-local vs. arg passing 15:44:44 how you generally have a controller returning a dictionary 15:44:51 it's not as common to interact with the response directly 15:45:02 you don't have to manually do a response.body = serialize_json(...) 15:45:09 it's handled by the @expose decorator 15:45:16 I see. 15:45:27 interesting 15:45:28 so given that many pecan controllers don't interact w/ the req/resp directly (the framework does it for you) 15:45:38 these objects are provided in thread local context for situations where you *do* want to monkey with them 15:45:42 e.g., setting custom response headers 15:46:07 team, I need help with feedbacks on this https://stackedit.io/viewer#!provider=gist&gistId=9071601&filename=marconi-installation-guide 15:46:24 that is marconi installation guide, that I am writing 15:46:25 kgriffs: re your comment on philosophy, yes, exactly that 15:46:40 need to finish today, so not state of art 15:47:00 oz_akan_: kk, stand by and we'll give you the floor in a minute 15:47:14 okay, found that code, kgriffs 15:47:26 ryanpetrello: thanks for searching! 15:47:33 https://github.com/ryanpetrello/falcon/commit/a380bafdec6b8217edb6a59cebd94dfd3b408ecb 15:47:41 I tinkered on this around the last summit 15:47:43 #link https://github.com/ryanpetrello/falcon/commit/a380bafdec6b8217edb6a59cebd94dfd3b408ecb 15:47:56 sse falcon/bench/nuts.py 15:48:09 it's a subclass of the Pecan app that does Falcon-style routing 15:48:18 this is just a naive example (it uses Falcon code, in fact) 15:48:20 kk 15:48:33 but it just goes to show that you don't *have to* use the object dispatch if you don't want it 15:48:40 that's very good to know 15:48:58 yep 15:49:15 so, next steps for pecan - are there any specific questions we'd like to see addressed with further evaluation? 15:49:29 so, we need to consider all the factors. If it comes down to object dispatch, then we have a workaround there. 15:49:51 alcabrera: I still want to see benchmarks 15:50:09 +1 15:50:12 kgriffs: yes, I will working on it, now that I have a controller working 15:50:17 *I will be 15:50:53 ryanpetrello: Doing a bit of modification to the router layer is cool; what I don't want to see happen is we go down the rabbit hole of basically rewriting Falcon inside Pecan; then it's like, what's the point? 15:51:03 kgriffs: +1 15:51:13 #note pecan evaluation: let's see some benchmarks, marconi:falcon, marconi:pecan 15:51:18 #info pecan evaluation: let's see some benchmarks, marconi:falcon, marconi:pecan 15:51:26 so other next steps 15:52:13 kgriffs: +1 15:52:23 that said, the routing portion of falcon is pretty simple, certainly more simple than what pecan does 15:52:33 my concern more lies in a re-implementation of what webob provides 15:52:48 what does webob provide? 15:52:59 I suppose that's a rather broad question. :P 15:53:01 a decade of experience and stability :) 15:53:04 heh 15:53:09 and the support of a *much* larger community 15:53:11 Pyramid 15:53:15 I'd like to see alcabrera and balajiiyer look at ceilometer and work with ryanpetrello to make sure our POC is done the "Pecan Way" 15:53:31 ryanpetrello: so, that is a valid concern, and I don't want to discount that 15:53:32 but 15:53:35 (well, much larger *web framework* community, I should say) 15:53:43 there are significant downsides to webob 15:53:59 and Falcon has extensive test coverage and is being picked up by a lot of people 15:54:07 so, it isn't all black-and-white 15:55:04 I mean, you could make the same argument about Django vs. Pecan 15:55:27 yep, very true 15:55:37 (all true) 15:55:43 so let me know how I can help w/ reviews and provide feedback 15:55:50 looking at the implementation I saw above, it looks like you all are on the right track 15:56:04 let's submit small patches to gerrit from here on, balajiiyer 15:56:07 ryanpetrello: thanks for your support! 15:56:07 but if there's a sticking point in certain areas of Pecan, ask me, and I'm happy to provide advice on what alternatives might look like 15:56:10 yup, n 15:56:11 *np 15:56:45 ryanpetrello: thanks! I appreciate it. Looks like we'll need a lot of help to take advantage of idiomatic pecan. :) 15:56:46 also, keep in mind that if it isn't something core to Pecan's design philosophy, we have the opportunity to send pull requests. :) 15:57:15 that would be my next question - I was thinking this will be like a POC, not necessarily belongs in Marconi master. kgriffs do you want me to submit patches for pecan work? 15:57:37 balajiiyer: hmmm, well. 15:57:50 You could always submit it flagged as WIP so we can all see it 15:58:00 +1 15:58:34 Pecan is now a separate transport driver so it doesnt interfere with any other modules, so that could work 15:58:50 marconi.queues.transport.pecan 15:59:26 we're almost out of time - any other thoughts? :) 15:59:42 man, where's the time go?! 15:59:49 flaper87 ate it 15:59:55 final thought 16:00:07 please review api v1.1 stuff 16:00:13 +1 16:00:39 adrian_otto: Error: Can't start another meeting, one is in progress. Use #endmeeting first. 16:00:44 thanks everyone! 16:00:46 ttfn 16:00:49 #endmeeting