Wednesday, 2014-02-05

*** david-lyle has joined #storyboard00:13
*** jcoufal has quit IRC00:42
*** jcoufal has joined #storyboard00:42
lifeless.win 4801:08
*** cody-somerville has quit IRC01:17
*** drdee_ has joined #storyboard01:25
*** AaronGr is now known as AaronGr_Zzz02:21
*** jcoufal has quit IRC02:42
*** jcoufal has joined #storyboard02:43
*** jcoufal has quit IRC02:59
*** drdee_ has quit IRC04:55
*** miqui has quit IRC06:22
*** hashar has joined #storyboard08:19
*** che-arne has joined #storyboard08:23
*** che-arne has quit IRC08:29
*** jcoufal has joined #storyboard08:55
*** jcoufal has quit IRC09:54
*** cody-somerville has joined #storyboard10:05
*** jcoufal has joined #storyboard10:23
*** ruhe has joined #storyboard11:59
*** ruhe is now known as ruhe_12:06
*** ruhe_ is now known as ruhe12:06
*** hashar has quit IRC12:24
*** cody-somerville has quit IRC12:39
*** ruhe is now known as ruhe_12:44
*** ruhe_ has quit IRC12:48
*** hashar has joined #storyboard13:08
*** cody-somerville has joined #storyboard13:18
*** ruhe has joined #storyboard13:22
gothicmindfoodlifeless: so nice to see you in here, even accidentally :)13:32
*** drdee_ has joined #storyboard13:33
*** ruhe is now known as ruhe_13:46
*** ruhe_ is now known as ruhe13:54
*** ruhe has quit IRC13:54
*** miqui has joined #storyboard14:00
miqui...gm..14:27
*** ruhe has joined #storyboard14:35
ruhettx: regarding https://review.openstack.org/#/c/69830/14:41
ruhewe found that methods we use from lockutils changed their signature14:41
ttxhmm ok14:41
ruheso Nikita has to update his patch to accommodate existing code to newer version of lockutils14:42
ttxack14:42
*** ruhe is now known as ruhe_14:46
*** ruhe_ is now known as ruhe14:49
*** ruhe is now known as ruhe_14:53
*** ruhe_ is now known as ruhe14:53
*** NikitaKonovalov is now known as NikitaKonovalov_15:01
*** ruhe is now known as ruhe_15:01
*** ruhe_ is now known as ruhe15:05
*** ruhe is now known as ruhe_15:07
*** ruhe_ is now known as ruhe15:09
*** drdee_ has quit IRC15:13
*** ruhe is now known as ruhe_15:27
*** ruhe_ has quit IRC15:32
*** mfer has joined #storyboard15:32
*** drdee has joined #storyboard15:32
*** NikitaKonovalov_ is now known as NikitaKonovalov16:01
*** NikitaKonovalov is now known as NikitaKonovalov_16:18
*** AaronGr_Zzz is now known as AaronGr16:29
*** jcoufal has quit IRC16:47
*** david-lyle has quit IRC17:28
*** krotscheck has joined #storyboard17:36
krotscheckFun fact: Seahawks parade day is not a good day to be bus commuting.17:42
mferlol17:45
krotscheck....yeah17:47
krotscheckWell, thankfully, I can IRC from coffeeshop.17:48
krotscheckIt doesn't help that my bus stop is downstream from two major cities. Any bus that makes it this far (traffic is ridiculous) will already be full.17:48
*** hashar has quit IRC17:53
gothicmindfoodkrotscheck: this is the part where people start saying "sorry for the superbowl win"17:57
krotscheckgothicmindfood: Yeah, probably.17:58
krotscheckgothicmindfood: Anyway, I'm functional again, going to get the UI wired up to the backend now, though I might not be able to create a fully functional backend....17:58
gothicmindfoodkrotscheck: so you're feeling better? that's good news.17:59
mferI was in the process of setting up new projects in launchpad and I started to wonder.... when can I use storyboard instead. is there anything I can read to come up to speed on that?17:59
gothicmindfoodmfer: we are planning having a very bare bones MVP ready for infra to start using ASAP.18:00
gothicmindfoodmfer: but very bare bones is... well... VERY bare bones.18:01
gothicmindfoodhttps://etherpad.openstack.org/p/StoryboardMeetup18:01
mferwill very bare bones be better than launchpad?18:01
mferfor what ever version of better you'd like to use18:01
gothicmindfood^ that etherpad link has some MVP definitions around it18:01
gothicmindfoodmfer: that depends on what specific problems you think launchpad has ;)18:02
gothicmindfoodkrotscheck is hard at work on the web client part of MVP18:03
gothicmindfoodbut we still need some work, as far as I understand, on the API, general auth, and auth integration with Launchpad18:04
gothicmindfoodhttps://etherpad.openstack.org/p/StoryboardAuth18:04
gothicmindfoodis a summary of the auth specs18:04
mferok18:04
gothicmindfoodkrotscheck is also about to leave for vacation in Thailand (be jealous), so the next two weeks might be slower than the previous two18:05
gothicmindfoodbut SergeyLukjanov NikitaKonovalov_ and ruhe have been doing a lot of great work, too, so who knows? Maybe we'll have something by end of week.18:06
*** cody-somerville has quit IRC18:07
krotscheckgothicmindfood: Tons better. I'm at that stage of sick where my body's just trying to get all the crap out. Fever's gone, soreness is gone, random fever dreams are gone.18:09
*** david-lyle has joined #storyboard18:09
gothicmindfoodkrotscheck: yay! so glad you're feeling better. it would've been a nightmare to get on a trans-pacific flight feeling like crap.18:12
krotscheckno kidding18:13
krotscheckgothicmindfood: How's NYC?18:13
gothicmindfoodkrotscheck: not there yet, but I hear there's snow.18:13
* gothicmindfood is coming at you from the airplane wifi18:14
gothicmindfoodhopefully this plane will land, and i will get into Soho without trouble.18:14
krotscheckgothicmindfood: I'm sure you will. When are you landing?18:15
gothicmindfooder. 2:30ish EST I think.18:18
krotscheckOk, so you'll probably be offline in about half an hour.18:22
krotscheckHow's your lovely companion doing?18:23
gothicmindfoodkrotscheck: I will shut down IRC in 10 minutes, because my laptop battery sucks, but my nexus 7 will be on so I can look at the web/gchat :)18:24
krotscheckGot it.18:24
krotscheckOn a more storyboard-related note, I'm trying to figure out the best way to get a count of list records.18:24
gothicmindfoodyou mean my cello?18:25
krotscheckYes, I do :)18:25
gothicmindfoodha. well, thanks!18:25
gothicmindfoodhm. Count of list records - care to share the user story? ;)18:26
krotscheckYes.18:26
krotscheck"As a user searching for projects, I want to see how many projects are in my current search results"18:26
krotscheckAlso, paging18:26
krotscheckI _think_ I have a solution.18:26
krotscheckRIght now our API returns a plain JSON array.18:27
krotscheckSo if I ask for records 1 through 10, I get an array with 10 results.18:28
krotscheckBut I don't know how many results there are, so I can't tell the user "Oh, and there happen to be 13 more pages"18:28
krotscheckThe question really is: Should paging records come back with the search results, or be a separate call?18:29
krotscheckI'm a bigger fan of having it all be one call.18:29
persiaBecause the number of results might change for a given query between calls for a subset, shouldn't the query return the total number if it can know it?18:29
krotscheckpersia: Yeah, that's what I'm thinking18:30
krotscheckInstead of [{},{},{}]18:30
krotscheckReturn {total:130,offset:0,limit:10,results:[{}{}{}]}18:31
persiaThe outstanding issue is communicating to the user that the number of pages is just a guess, and may change on refresh18:31
persia(it matters more for page 72 of 100 than for page 1 of 13)18:31
krotscheckpersia: Thankfully, user usage patterns rarely require that.18:32
krotscheckpersia: Usually, if people don't find what they're looking for on the first page, they'll try a different search.18:32
gothicmindfoodpersia: if that many people are using storyboard regularly, that will be a good problem to have :)18:32
gothicmindfoodkrotscheck: ah, very true, too (re: research instead of scroll through pages and pages)18:33
persiaI suppose.  I was thinking to add a '?' or similar to the end, rather than actually dealing with the details.18:33
persiaBut also, for folk who have limited direction, paging through results looking for something interesting isn't unreasonable.18:33
krotscheckpersia: Point. How resilient do you think that kind of a suer would be to shifts in the data?18:34
persiaVery.  They don't actually care about capturing them all, they are just looking for something interesting.18:35
persiaSo if new results get inserted in the middle of the query, they just get skipped (or potentially something shown twice as a hint)18:35
persiaIf results are dropped, again, some things aren't shown on page N18:35
persiaPoeple who want to get reports should use a different interface18:35
gothicmindfoodyeah - if someone's looking for something VERY specific, they'll probably have the ID onhand to paste into search18:36
persiaOr at least are able to define some sensible search terms18:36
krotscheckpersia: Yeah, I think that would become a real problem if we ever implement live-scrolling or something like that. In that case, we can add de-duping logic in the client.18:36
gothicmindfoodif they're paging through, it means they're just windowshopping for stuff.18:36
persiakrotscheck: But that's an addable feature, if we have the good problem :)18:36
krotscheckexactly :)18:36
persiagothicmindfood: Precisely18:37
gothicmindfoodpersia and krotscheck : do we have any assumptions we want to make about how our users like to windowshop?18:37
persiaWhen I'm windowshopping, I generally have some loose idea of what to do, so have a broad search term, then click "next" to find something I think I might actually be able to do or might want to do.18:38
gothicmindfooddo you search by project, persia ?18:38
gothicmindfoodand then sort by date, or severity or something?18:38
persiaFor example, if I know about IPMI, I might search for stories realated to that, and then page through the titles until I found something I cared about enough to dig into details18:39
persiagothicmindfood: Typically by subject area18:39
* persia has to run off now, unfortunately18:39
krotscheckgothicmindfood, persia: Feels like a search-within-project or something like that?18:41
gothicmindfoodkrotscheck: perhaps?18:43
gothicmindfoodI keep having this image of having filter options for different pieces of the data on top that can click on/off as you look. But perhaps that's not helpful.18:43
krotscheckgothicmindfood: Search is hard :)18:45
krotscheckgothicmindfood: Which is why I really want to collect usability data, to figure out HOW people are searching, so we can build something for those uses.18:45
gothicmindfoodkrotscheck: I wonder if we can catch any current data in launchpad somehow?18:47
gothicmindfoodjust to see how people behave currently?18:47
krotscheckI think there is, but....18:48
krotscheckIt'll be hacky and difficult.18:48
gothicmindfoodprobably not worth the time18:48
gothicmindfoodbest for us to just build it into storyboard as we go18:51
krotscheckWe can ask canonical to add a google analytics code for all of launchpad :)18:51
gothicmindfoodkrotscheck: lulz.18:51
krotscheckOr just give us access to theirs.18:51
krotscheckActually, lemme check, they might already be using it.18:51
krotscheckYup!18:51
krotscheckANyone want to call them up and say: Hey, we want to build a competing product, can we use your usability data?18:51
gothicmindfoodkrotscheck: or we can just try to guess their analytics password?18:52
gothicmindfood;)18:52
krotscheckThe other alternative would be sending a message to the openstack-dev list and asking everyone to install a web tracker to record for us :)18:52
krotscheck"Hi there, we want to big brother you!"18:52
gothicmindfoodyeah, I think we're stuck with whatever we want to implement on the storyboard end of things. :)_18:52
gothicmindfoodalright krotscheck - I am going to the tablet because battery's getting low.18:58
krotscheckkk18:58
gothicmindfoodsee you when I'm in snowy NYC. :)18:58
krotscheckOk, so I think the way I'm going to propose is via headers, not via the JSON content.19:45
krotscheckhttps://etherpad.openstack.org/p/StoryboardAPIPaging19:50
krotscheckjeblair: Thoughts? ^19:51
krotscheckmordred: Also ^19:51
jeblairkrotscheck: consider doing what other openstack projects do; though don't constrain yourself to that.  also, add it later.  also, i don't find pagination useful for anything less than 1,000 items (maybe more).19:59
krotscheckjeblair: Isn't pagination one of those thigns that should be baked into the API at the outset?20:00
jeblairkrotscheck: not for mvp20:00
jeblairkrotscheck: i don't think we need to be api stable for a bit yet20:01
krotscheckjeblair: True. Bu tthen I need to have the frontend be smart enough to upgrade for two weeks of backend work.20:04
krotscheckSo if I know that "Hey, paging might appear in the next two weeks, I can check for that"20:04
jeblairkrotscheck: they'll both be continuously deployed, so you can add it to the fe, then add it to the api20:07
*** hashar has joined #storyboard20:43
*** drdee has quit IRC20:59
*** drdee has joined #storyboard21:01
krotscheckI don't suppose anyone here can give me some quick rudimentary python assistance?21:14
persiaPastebin your snippet and ask a specific question :)21:26
gothicmindfoodkrotscheck: I could totally send you my battleship game. Otherwise, probably not. ;)21:29
krotscheckWell, the first question is: "How do I get WSME to pick specific query parameters and pass them to my pecan controlelr"21:29
krotscheckThis definitely doesn't work: @wsme_pecan.wsexpose([wsme_models.Story], project=int, offset=int, limit=int)21:29
krotscheck... and the docs are spotty :/21:30
krotscheckMwa ha! Figured it out, courtesy of trial-and-error.21:34
*** drdee has quit IRC21:38
*** hashar has quit IRC21:48
krotscheckDUm dee dum22:02
*** david-lyle has quit IRC22:08
*** cody-somerville has joined #storyboard22:10
*** mfer has quit IRC22:11
mordredhey krotscheck22:17
krotscheckhey mordred22:17
mordredkrotscheck: how's your illness?22:18
krotscheckphlegmatic.22:18
krotscheckYours?22:18
krotscheckmordred: I just created my first story22:26
mordredkrotscheck: w00t!22:27
mordredjeblair: ^^22:27
jeblairkrotscheck: yaay!22:27
krotscheckMy goal is MVP sans-auth by EOD.22:28
krotscheckGiven that I've got the entire project and story API wrapped in already, I think that's doable.22:28
krotscheckWell, wait22:28
krotschecksans-comments22:28
krotscheckSince comments require auth22:29
krotscheckActually, let me just layer on a shitton of caveats there.22:29
krotscheckA decent amount of work has to happen on the python layer, like actually filtering stories my project.22:30
krotscheckthough if one of you two want to fix this pastebin for me, that can also go in.22:31
krotscheckhttp://paste.openstack.org/show/62681/22:31
* mordred looks22:32
krotscheckAlso, there's some outstanding questions about how to resolve additional metadata22:34
*** devananda has joined #storyboard22:34
devanandahi!22:34
mordredhey look! it's a devananda22:34
mordreddevananda: http://paste.openstack.org/show/62681/22:34
krotscheckIf I GET a story, but the ui says to also show the project name, should I make an extra GET request for each project to go get its name, or should the story JSON come back with more-than-just-the-db-record.22:35
cody-somervillewe should be able to specify to the API if it should prefetch22:35
devanandai'm lacking context22:36
devanandakrotscheck: what's the URL to fetch a story vs a project?22:36
devanandabroadly speaking, what the API chooses to expose is not necessary of any relationship to what's in teh DB22:37
devanandathere's often a correlation, but, you know, layers ....22:37
krotscheckdevananda: Under discussion is this screen- http://docs-draft.openstack.org/97/70897/1/check/gate-storyboard-webclient-js-unittests/32bcc1d/dist/#!/story/1/overview22:37
krotscheckCurrent api endpoint for stories is /api/v1/stories/[0-9]+22:38
krotscheckApi endpoint for projects is /api/v1/projects/[0-9]+22:38
devanandakrotscheck: what's the logical relationshpi between stories and projects?22:39
krotscheckFor MVP, all stories are associated to one project.22:39
krotscheckSorry22:39
devanandathe mockup looks like all tasks taht belong to a story are associated to the same project22:39
krotscheckOne-to-Many relationship, one project can have many stories, stories can only have one project22:40
krotscheckA story can have many tasks,22:40
krotscheck...but tasks can be associated to any project.22:40
mordredyup. actually, did we decide that stories shouldn't have projects for now?22:40
krotscheckmordred: I'm building against the current api and data model.22:41
devanandatask belongs to both a project and a story22:41
devanandastory has no direct relationship to project?22:41
krotscheckmordred: Since I only have 3 days, and lost one since I was sick.22:41
mordredkrotscheck: nod. right choice22:41
krotscheckdevananda: You happen to know how I can set a parameter as optional in pecan/wsme?22:43
devanandakrotscheck: input or output?22:44
krotscheckinput22:45
krotscheckSee pastebin - that project parameter needs to be optional22:45
devanandakrotscheck: to your initial question, it sounds like the API representation of a story should include a project resource that has both name and url22:45
devanandaiow, a nested resource22:46
krotscheckdevananda: As long as that doesn't blow up the size of the response....22:46
*** miqui has quit IRC22:47
devanandakrotscheck: eg, http://paste.openstack.org/show/62686/22:48
krotscheckI'm not certain I like the idea of allowing resource nesting N levels down.22:49
devanandanot N levels22:49
devanandayou're not returning the whole project22:50
devanandaa link + a name22:50
devanandawhen the client wants to know more about the project, they GET that URL22:50
devanandabut if they jsut want to display the Story, well, they have enough to do so22:50
devanandatake a look eg at http://docs.openstack.org/developer/ironic/webapi/v1.html#Node22:50
devanandaand the nested ports [] list22:51
krotscheckHrm - I don't think the url for the resource is necessary, since most API abstractions have an ORM-ish CRUD interface that can resolve that path from an ID.22:52
krotscheckBut I get what you're saying.22:52
krotscheckIn order to keep things under control, perhaps teach the API what additional keys should be resolved... maybe something like ?resolve=resourceReferenceIdName22:53
devanandakrotscheck: versioning22:53
krotscheckdevananda: straw man22:56
cody-somervillekrotscheck: REST explicitly uses resource URLs over just ID.22:57
devanandakrotscheck: having the API return a URL instead of a resource ID makes the client's life easier, even in a strawman22:57
devanandaand what cody-somerville said22:57
krotscheckcody-somerville: THat's a religious debate.22:57
krotscheckBut I'm not interested right now in arguing semantics, I'm interseted in building a project.22:58
cody-somervilleit makes sense as it allows you to move the resource to a different service entirely in the future for example22:58
krotscheckAnd to get this project onto its feet before I go offline in 2 hours.22:58
cody-somerville'Hypermedia as the engine of application state', linking.22:58
krotscheckSo let's suspend the inevitable religious war and address the question that's actually blocking me right now: How do I flag a WSME parameter as optional?22:59
devanandakrotscheck: an input parameter22:59
devanandalemme look22:59
devanandakrotscheck: can you give me an example of an optional input param?23:00
krotscheckI want to filter a list of results to a particular constraint.23:00
krotscheckhttp://paste.openstack.org/show/62681/23:00
cody-somervilleAccording to documentation that I can see, defining an argument as optional is done by providing a default value23:00
devanandakrotscheck: right. so just give it a default value23:01
cody-somervillekrotscheck: http://pythonhosted.org/WSME/functions.html#optional-arguments23:01
mordredcody-somerville: that soounds WAY too sensible. who the hell designed that23:01
krotscheckMwa ha!23:01
krotscheckGoogle fails.23:01
krotscheckCody wins23:01
devanandakrotscheck: http://git.openstack.org/cgit/openstack/ironic/tree/ironic/api/controllers/v1/node.py#n48023:01
devanandalink to example :)23:01
krotscheckSweeeeet23:03
devanandakrotscheck: also, we paginate/limit/sort/etc. feel free to copy those methods23:04
cody-somervillefrowny face to copying code :(23:04
cody-somervilledo we have an oslo thingy for common stuff I wonder?23:04
devanandacody-somerville: not for this yet23:05
devanandacody-somerville: also it's small enough and project specific enough taht I suspect krotscheck will modify it heavily once he copies the plubming23:05
devanandaeg http://git.openstack.org/cgit/openstack/ironic/tree/ironic/api/controllers/v1/collection.py23:05
krotscheckHonestly I don't think I'll have much of a chance to copy much.23:05
cody-somervilledevananda: that looks incredibly generic ;p23:06
krotscheckI just need the API to return something other than an error.23:06
cody-somervillethat would indeed be helpful.23:06
krotscheckWell, cody-somerville, Openstack is the church of DIY, so if you see a need to get this into oslo, I'm sure that a lot of people would appreciate your work.23:06
cody-somervilleOpen Stack is increasingly the church of NIH23:07
devanandahah23:07
cody-somervillekrotscheck: but I have no doubt that if someone else doesn't get to it before me, I'll be tackling it. It keeps me up at night. :(23:08
* cody-somerville is hoping Doug Hellman and crew is already on it.23:09
cody-somervilles/is/are/23:09
mordredyeah. actually, the right thing would probably be a patch to pecan/wsme rather than to an oslo thing - but yeah23:10
krotscheckOffline to go get lunch. bbiab23:10
devanandamordred: ++23:12
*** krotscheck has quit IRC23:15
*** david-lyle has joined #storyboard23:21
openstackgerritRuslan Kamaldinov proposed a change to openstack-infra/storyboard: Add oslo fixture module and update everything else  https://review.openstack.org/6983023:39

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!