*** david-lyle has joined #storyboard | 00:13 | |
*** jcoufal has quit IRC | 00:42 | |
*** jcoufal has joined #storyboard | 00:42 | |
lifeless | .win 48 | 01:08 |
---|---|---|
*** cody-somerville has quit IRC | 01:17 | |
*** drdee_ has joined #storyboard | 01:25 | |
*** AaronGr is now known as AaronGr_Zzz | 02:21 | |
*** jcoufal has quit IRC | 02:42 | |
*** jcoufal has joined #storyboard | 02:43 | |
*** jcoufal has quit IRC | 02:59 | |
*** drdee_ has quit IRC | 04:55 | |
*** miqui has quit IRC | 06:22 | |
*** hashar has joined #storyboard | 08:19 | |
*** che-arne has joined #storyboard | 08:23 | |
*** che-arne has quit IRC | 08:29 | |
*** jcoufal has joined #storyboard | 08:55 | |
*** jcoufal has quit IRC | 09:54 | |
*** cody-somerville has joined #storyboard | 10:05 | |
*** jcoufal has joined #storyboard | 10:23 | |
*** ruhe has joined #storyboard | 11:59 | |
*** ruhe is now known as ruhe_ | 12:06 | |
*** ruhe_ is now known as ruhe | 12:06 | |
*** hashar has quit IRC | 12:24 | |
*** cody-somerville has quit IRC | 12:39 | |
*** ruhe is now known as ruhe_ | 12:44 | |
*** ruhe_ has quit IRC | 12:48 | |
*** hashar has joined #storyboard | 13:08 | |
*** cody-somerville has joined #storyboard | 13:18 | |
*** ruhe has joined #storyboard | 13:22 | |
gothicmindfood | lifeless: so nice to see you in here, even accidentally :) | 13:32 |
*** drdee_ has joined #storyboard | 13:33 | |
*** ruhe is now known as ruhe_ | 13:46 | |
*** ruhe_ is now known as ruhe | 13:54 | |
*** ruhe has quit IRC | 13:54 | |
*** miqui has joined #storyboard | 14:00 | |
miqui | ...gm.. | 14:27 |
*** ruhe has joined #storyboard | 14:35 | |
ruhe | ttx: regarding https://review.openstack.org/#/c/69830/ | 14:41 |
ruhe | we found that methods we use from lockutils changed their signature | 14:41 |
ttx | hmm ok | 14:41 |
ruhe | so Nikita has to update his patch to accommodate existing code to newer version of lockutils | 14:42 |
ttx | ack | 14:42 |
*** ruhe is now known as ruhe_ | 14:46 | |
*** ruhe_ is now known as ruhe | 14:49 | |
*** ruhe is now known as ruhe_ | 14:53 | |
*** ruhe_ is now known as ruhe | 14:53 | |
*** NikitaKonovalov is now known as NikitaKonovalov_ | 15:01 | |
*** ruhe is now known as ruhe_ | 15:01 | |
*** ruhe_ is now known as ruhe | 15:05 | |
*** ruhe is now known as ruhe_ | 15:07 | |
*** ruhe_ is now known as ruhe | 15:09 | |
*** drdee_ has quit IRC | 15:13 | |
*** ruhe is now known as ruhe_ | 15:27 | |
*** ruhe_ has quit IRC | 15:32 | |
*** mfer has joined #storyboard | 15:32 | |
*** drdee has joined #storyboard | 15:32 | |
*** NikitaKonovalov_ is now known as NikitaKonovalov | 16:01 | |
*** NikitaKonovalov is now known as NikitaKonovalov_ | 16:18 | |
*** AaronGr_Zzz is now known as AaronGr | 16:29 | |
*** jcoufal has quit IRC | 16:47 | |
*** david-lyle has quit IRC | 17:28 | |
*** krotscheck has joined #storyboard | 17:36 | |
krotscheck | Fun fact: Seahawks parade day is not a good day to be bus commuting. | 17:42 |
mfer | lol | 17:45 |
krotscheck | ....yeah | 17:47 |
krotscheck | Well, thankfully, I can IRC from coffeeshop. | 17:48 |
krotscheck | It 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 IRC | 17:53 | |
gothicmindfood | krotscheck: this is the part where people start saying "sorry for the superbowl win" | 17:57 |
krotscheck | gothicmindfood: Yeah, probably. | 17:58 |
krotscheck | gothicmindfood: 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 |
gothicmindfood | krotscheck: so you're feeling better? that's good news. | 17:59 |
mfer | I 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 |
gothicmindfood | mfer: we are planning having a very bare bones MVP ready for infra to start using ASAP. | 18:00 |
gothicmindfood | mfer: but very bare bones is... well... VERY bare bones. | 18:01 |
gothicmindfood | https://etherpad.openstack.org/p/StoryboardMeetup | 18:01 |
mfer | will very bare bones be better than launchpad? | 18:01 |
mfer | for what ever version of better you'd like to use | 18:01 |
gothicmindfood | ^ that etherpad link has some MVP definitions around it | 18:01 |
gothicmindfood | mfer: that depends on what specific problems you think launchpad has ;) | 18:02 |
gothicmindfood | krotscheck is hard at work on the web client part of MVP | 18:03 |
gothicmindfood | but we still need some work, as far as I understand, on the API, general auth, and auth integration with Launchpad | 18:04 |
gothicmindfood | https://etherpad.openstack.org/p/StoryboardAuth | 18:04 |
gothicmindfood | is a summary of the auth specs | 18:04 |
mfer | ok | 18:04 |
gothicmindfood | krotscheck is also about to leave for vacation in Thailand (be jealous), so the next two weeks might be slower than the previous two | 18:05 |
gothicmindfood | but 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 IRC | 18:07 | |
krotscheck | gothicmindfood: 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 #storyboard | 18:09 | |
gothicmindfood | krotscheck: 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 |
krotscheck | no kidding | 18:13 |
krotscheck | gothicmindfood: How's NYC? | 18:13 |
gothicmindfood | krotscheck: not there yet, but I hear there's snow. | 18:13 |
* gothicmindfood is coming at you from the airplane wifi | 18:14 | |
gothicmindfood | hopefully this plane will land, and i will get into Soho without trouble. | 18:14 |
krotscheck | gothicmindfood: I'm sure you will. When are you landing? | 18:15 |
gothicmindfood | er. 2:30ish EST I think. | 18:18 |
krotscheck | Ok, so you'll probably be offline in about half an hour. | 18:22 |
krotscheck | How's your lovely companion doing? | 18:23 |
gothicmindfood | krotscheck: 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 |
krotscheck | Got it. | 18:24 |
krotscheck | On a more storyboard-related note, I'm trying to figure out the best way to get a count of list records. | 18:24 |
gothicmindfood | you mean my cello? | 18:25 |
krotscheck | Yes, I do :) | 18:25 |
gothicmindfood | ha. well, thanks! | 18:25 |
gothicmindfood | hm. Count of list records - care to share the user story? ;) | 18:26 |
krotscheck | Yes. | 18:26 |
krotscheck | "As a user searching for projects, I want to see how many projects are in my current search results" | 18:26 |
krotscheck | Also, paging | 18:26 |
krotscheck | I _think_ I have a solution. | 18:26 |
krotscheck | RIght now our API returns a plain JSON array. | 18:27 |
krotscheck | So if I ask for records 1 through 10, I get an array with 10 results. | 18:28 |
krotscheck | But 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 |
krotscheck | The question really is: Should paging records come back with the search results, or be a separate call? | 18:29 |
krotscheck | I'm a bigger fan of having it all be one call. | 18:29 |
persia | Because 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 |
krotscheck | persia: Yeah, that's what I'm thinking | 18:30 |
krotscheck | Instead of [{},{},{}] | 18:30 |
krotscheck | Return {total:130,offset:0,limit:10,results:[{}{}{}]} | 18:31 |
persia | The outstanding issue is communicating to the user that the number of pages is just a guess, and may change on refresh | 18:31 |
persia | (it matters more for page 72 of 100 than for page 1 of 13) | 18:31 |
krotscheck | persia: Thankfully, user usage patterns rarely require that. | 18:32 |
krotscheck | persia: Usually, if people don't find what they're looking for on the first page, they'll try a different search. | 18:32 |
gothicmindfood | persia: if that many people are using storyboard regularly, that will be a good problem to have :) | 18:32 |
gothicmindfood | krotscheck: ah, very true, too (re: research instead of scroll through pages and pages) | 18:33 |
persia | I suppose. I was thinking to add a '?' or similar to the end, rather than actually dealing with the details. | 18:33 |
persia | But also, for folk who have limited direction, paging through results looking for something interesting isn't unreasonable. | 18:33 |
krotscheck | persia: Point. How resilient do you think that kind of a suer would be to shifts in the data? | 18:34 |
persia | Very. They don't actually care about capturing them all, they are just looking for something interesting. | 18:35 |
persia | So 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 |
persia | If results are dropped, again, some things aren't shown on page N | 18:35 |
persia | Poeple who want to get reports should use a different interface | 18:35 |
gothicmindfood | yeah - if someone's looking for something VERY specific, they'll probably have the ID onhand to paste into search | 18:36 |
persia | Or at least are able to define some sensible search terms | 18:36 |
krotscheck | persia: 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 |
gothicmindfood | if they're paging through, it means they're just windowshopping for stuff. | 18:36 |
persia | krotscheck: But that's an addable feature, if we have the good problem :) | 18:36 |
krotscheck | exactly :) | 18:36 |
persia | gothicmindfood: Precisely | 18:37 |
gothicmindfood | persia and krotscheck : do we have any assumptions we want to make about how our users like to windowshop? | 18:37 |
persia | When 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 |
gothicmindfood | do you search by project, persia ? | 18:38 |
gothicmindfood | and then sort by date, or severity or something? | 18:38 |
persia | For 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 details | 18:39 |
persia | gothicmindfood: Typically by subject area | 18:39 |
* persia has to run off now, unfortunately | 18:39 | |
krotscheck | gothicmindfood, persia: Feels like a search-within-project or something like that? | 18:41 |
gothicmindfood | krotscheck: perhaps? | 18:43 |
gothicmindfood | I 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 |
krotscheck | gothicmindfood: Search is hard :) | 18:45 |
krotscheck | gothicmindfood: 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 |
gothicmindfood | krotscheck: I wonder if we can catch any current data in launchpad somehow? | 18:47 |
gothicmindfood | just to see how people behave currently? | 18:47 |
krotscheck | I think there is, but.... | 18:48 |
krotscheck | It'll be hacky and difficult. | 18:48 |
gothicmindfood | probably not worth the time | 18:48 |
gothicmindfood | best for us to just build it into storyboard as we go | 18:51 |
krotscheck | We can ask canonical to add a google analytics code for all of launchpad :) | 18:51 |
gothicmindfood | krotscheck: lulz. | 18:51 |
krotscheck | Or just give us access to theirs. | 18:51 |
krotscheck | Actually, lemme check, they might already be using it. | 18:51 |
krotscheck | Yup! | 18:51 |
krotscheck | ANyone want to call them up and say: Hey, we want to build a competing product, can we use your usability data? | 18:51 |
gothicmindfood | krotscheck: or we can just try to guess their analytics password? | 18:52 |
gothicmindfood | ;) | 18:52 |
krotscheck | The 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 |
gothicmindfood | yeah, I think we're stuck with whatever we want to implement on the storyboard end of things. :)_ | 18:52 |
gothicmindfood | alright krotscheck - I am going to the tablet because battery's getting low. | 18:58 |
krotscheck | kk | 18:58 |
gothicmindfood | see you when I'm in snowy NYC. :) | 18:58 |
krotscheck | Ok, so I think the way I'm going to propose is via headers, not via the JSON content. | 19:45 |
krotscheck | https://etherpad.openstack.org/p/StoryboardAPIPaging | 19:50 |
krotscheck | jeblair: Thoughts? ^ | 19:51 |
krotscheck | mordred: Also ^ | 19:51 |
jeblair | krotscheck: 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 |
krotscheck | jeblair: Isn't pagination one of those thigns that should be baked into the API at the outset? | 20:00 |
jeblair | krotscheck: not for mvp | 20:00 |
jeblair | krotscheck: i don't think we need to be api stable for a bit yet | 20:01 |
krotscheck | jeblair: True. Bu tthen I need to have the frontend be smart enough to upgrade for two weeks of backend work. | 20:04 |
krotscheck | So if I know that "Hey, paging might appear in the next two weeks, I can check for that" | 20:04 |
jeblair | krotscheck: they'll both be continuously deployed, so you can add it to the fe, then add it to the api | 20:07 |
*** hashar has joined #storyboard | 20:43 | |
*** drdee has quit IRC | 20:59 | |
*** drdee has joined #storyboard | 21:01 | |
krotscheck | I don't suppose anyone here can give me some quick rudimentary python assistance? | 21:14 |
persia | Pastebin your snippet and ask a specific question :) | 21:26 |
gothicmindfood | krotscheck: I could totally send you my battleship game. Otherwise, probably not. ;) | 21:29 |
krotscheck | Well, the first question is: "How do I get WSME to pick specific query parameters and pass them to my pecan controlelr" | 21:29 |
krotscheck | This 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 |
krotscheck | Mwa ha! Figured it out, courtesy of trial-and-error. | 21:34 |
*** drdee has quit IRC | 21:38 | |
*** hashar has quit IRC | 21:48 | |
krotscheck | DUm dee dum | 22:02 |
*** david-lyle has quit IRC | 22:08 | |
*** cody-somerville has joined #storyboard | 22:10 | |
*** mfer has quit IRC | 22:11 | |
mordred | hey krotscheck | 22:17 |
krotscheck | hey mordred | 22:17 |
mordred | krotscheck: how's your illness? | 22:18 |
krotscheck | phlegmatic. | 22:18 |
krotscheck | Yours? | 22:18 |
krotscheck | mordred: I just created my first story | 22:26 |
mordred | krotscheck: w00t! | 22:27 |
mordred | jeblair: ^^ | 22:27 |
jeblair | krotscheck: yaay! | 22:27 |
krotscheck | My goal is MVP sans-auth by EOD. | 22:28 |
krotscheck | Given that I've got the entire project and story API wrapped in already, I think that's doable. | 22:28 |
krotscheck | Well, wait | 22:28 |
krotscheck | sans-comments | 22:28 |
krotscheck | Since comments require auth | 22:29 |
krotscheck | Actually, let me just layer on a shitton of caveats there. | 22:29 |
krotscheck | A decent amount of work has to happen on the python layer, like actually filtering stories my project. | 22:30 |
krotscheck | though if one of you two want to fix this pastebin for me, that can also go in. | 22:31 |
krotscheck | http://paste.openstack.org/show/62681/ | 22:31 |
* mordred looks | 22:32 | |
krotscheck | Also, there's some outstanding questions about how to resolve additional metadata | 22:34 |
*** devananda has joined #storyboard | 22:34 | |
devananda | hi! | 22:34 |
mordred | hey look! it's a devananda | 22:34 |
mordred | devananda: http://paste.openstack.org/show/62681/ | 22:34 |
krotscheck | If 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-somerville | we should be able to specify to the API if it should prefetch | 22:35 |
devananda | i'm lacking context | 22:36 |
devananda | krotscheck: what's the URL to fetch a story vs a project? | 22:36 |
devananda | broadly speaking, what the API chooses to expose is not necessary of any relationship to what's in teh DB | 22:37 |
devananda | there's often a correlation, but, you know, layers .... | 22:37 |
krotscheck | devananda: Under discussion is this screen- http://docs-draft.openstack.org/97/70897/1/check/gate-storyboard-webclient-js-unittests/32bcc1d/dist/#!/story/1/overview | 22:37 |
krotscheck | Current api endpoint for stories is /api/v1/stories/[0-9]+ | 22:38 |
krotscheck | Api endpoint for projects is /api/v1/projects/[0-9]+ | 22:38 |
devananda | krotscheck: what's the logical relationshpi between stories and projects? | 22:39 |
krotscheck | For MVP, all stories are associated to one project. | 22:39 |
krotscheck | Sorry | 22:39 |
devananda | the mockup looks like all tasks taht belong to a story are associated to the same project | 22:39 |
krotscheck | One-to-Many relationship, one project can have many stories, stories can only have one project | 22:40 |
krotscheck | A story can have many tasks, | 22:40 |
krotscheck | ...but tasks can be associated to any project. | 22:40 |
mordred | yup. actually, did we decide that stories shouldn't have projects for now? | 22:40 |
krotscheck | mordred: I'm building against the current api and data model. | 22:41 |
devananda | task belongs to both a project and a story | 22:41 |
devananda | story has no direct relationship to project? | 22:41 |
krotscheck | mordred: Since I only have 3 days, and lost one since I was sick. | 22:41 |
mordred | krotscheck: nod. right choice | 22:41 |
krotscheck | devananda: You happen to know how I can set a parameter as optional in pecan/wsme? | 22:43 |
devananda | krotscheck: input or output? | 22:44 |
krotscheck | input | 22:45 |
krotscheck | See pastebin - that project parameter needs to be optional | 22:45 |
devananda | krotscheck: to your initial question, it sounds like the API representation of a story should include a project resource that has both name and url | 22:45 |
devananda | iow, a nested resource | 22:46 |
krotscheck | devananda: As long as that doesn't blow up the size of the response.... | 22:46 |
*** miqui has quit IRC | 22:47 | |
devananda | krotscheck: eg, http://paste.openstack.org/show/62686/ | 22:48 |
krotscheck | I'm not certain I like the idea of allowing resource nesting N levels down. | 22:49 |
devananda | not N levels | 22:49 |
devananda | you're not returning the whole project | 22:50 |
devananda | a link + a name | 22:50 |
devananda | when the client wants to know more about the project, they GET that URL | 22:50 |
devananda | but if they jsut want to display the Story, well, they have enough to do so | 22:50 |
devananda | take a look eg at http://docs.openstack.org/developer/ironic/webapi/v1.html#Node | 22:50 |
devananda | and the nested ports [] list | 22:51 |
krotscheck | Hrm - 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 |
krotscheck | But I get what you're saying. | 22:52 |
krotscheck | In order to keep things under control, perhaps teach the API what additional keys should be resolved... maybe something like ?resolve=resourceReferenceIdName | 22:53 |
devananda | krotscheck: versioning | 22:53 |
krotscheck | devananda: straw man | 22:56 |
cody-somerville | krotscheck: REST explicitly uses resource URLs over just ID. | 22:57 |
devananda | krotscheck: having the API return a URL instead of a resource ID makes the client's life easier, even in a strawman | 22:57 |
devananda | and what cody-somerville said | 22:57 |
krotscheck | cody-somerville: THat's a religious debate. | 22:57 |
krotscheck | But I'm not interested right now in arguing semantics, I'm interseted in building a project. | 22:58 |
cody-somerville | it makes sense as it allows you to move the resource to a different service entirely in the future for example | 22:58 |
krotscheck | And 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 |
krotscheck | So 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 |
devananda | krotscheck: an input parameter | 22:59 |
devananda | lemme look | 22:59 |
devananda | krotscheck: can you give me an example of an optional input param? | 23:00 |
krotscheck | I want to filter a list of results to a particular constraint. | 23:00 |
krotscheck | http://paste.openstack.org/show/62681/ | 23:00 |
cody-somerville | According to documentation that I can see, defining an argument as optional is done by providing a default value | 23:00 |
devananda | krotscheck: right. so just give it a default value | 23:01 |
cody-somerville | krotscheck: http://pythonhosted.org/WSME/functions.html#optional-arguments | 23:01 |
mordred | cody-somerville: that soounds WAY too sensible. who the hell designed that | 23:01 |
krotscheck | Mwa ha! | 23:01 |
krotscheck | Google fails. | 23:01 |
krotscheck | Cody wins | 23:01 |
devananda | krotscheck: http://git.openstack.org/cgit/openstack/ironic/tree/ironic/api/controllers/v1/node.py#n480 | 23:01 |
devananda | link to example :) | 23:01 |
krotscheck | Sweeeeet | 23:03 |
devananda | krotscheck: also, we paginate/limit/sort/etc. feel free to copy those methods | 23:04 |
cody-somerville | frowny face to copying code :( | 23:04 |
cody-somerville | do we have an oslo thingy for common stuff I wonder? | 23:04 |
devananda | cody-somerville: not for this yet | 23:05 |
devananda | cody-somerville: also it's small enough and project specific enough taht I suspect krotscheck will modify it heavily once he copies the plubming | 23:05 |
devananda | eg http://git.openstack.org/cgit/openstack/ironic/tree/ironic/api/controllers/v1/collection.py | 23:05 |
krotscheck | Honestly I don't think I'll have much of a chance to copy much. | 23:05 |
cody-somerville | devananda: that looks incredibly generic ;p | 23:06 |
krotscheck | I just need the API to return something other than an error. | 23:06 |
cody-somerville | that would indeed be helpful. | 23:06 |
krotscheck | Well, 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-somerville | Open Stack is increasingly the church of NIH | 23:07 |
devananda | hah | 23:07 |
cody-somerville | krotscheck: 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-somerville | s/is/are/ | 23:09 |
mordred | yeah. actually, the right thing would probably be a patch to pecan/wsme rather than to an oslo thing - but yeah | 23:10 |
krotscheck | Offline to go get lunch. bbiab | 23:10 |
devananda | mordred: ++ | 23:12 |
*** krotscheck has quit IRC | 23:15 | |
*** david-lyle has joined #storyboard | 23:21 | |
openstackgerrit | Ruslan Kamaldinov proposed a change to openstack-infra/storyboard: Add oslo fixture module and update everything else https://review.openstack.org/69830 | 23:39 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!