20:59:35 #startmeeting reddwarf 20:59:36 Meeting started Tue Apr 2 20:59:35 2013 UTC. The chair is hub_cap. Information about MeetBot at http://wiki.debian.org/MeetBot. 20:59:37 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 20:59:39 The meeting name has been set to 'reddwarf' 20:59:46 hello 20:59:52 hello 20:59:55 as usual, >>> time.sleep(120) 21:00:12 hi 21:00:19 hola 21:00:27 hey there 21:00:49 hi 21:01:03 hello 21:01:04 present 21:01:22 #link https://wiki.openstack.org/wiki/Meetings/RedDwarfMeeting 21:01:30 #link http://eavesdrop.openstack.org/meetings/reddwarf/2013/reddwarf.2013-03-26-20.59.html 21:01:47 greetings 21:01:55 greets 21:02:07 we ready to get this party started? 21:02:14 yup 21:02:25 #topic Action items 21:02:32 * juice is doing a shot 21:02:36 nice 21:02:41 someone snag grapex 21:02:44 where's the alcohol? 21:02:45 Let's do it. 21:02:50 he's trying to resolve his connection 21:02:51 and smack him w/ a trout 21:03:01 ok datsun180b, still smack him w a trout, hes on a mac 21:03:10 so ill skip him for now 21:03:24 my action item is next, and i actually added it to the agenda today 21:03:33 so ill skip it till then (action / action items) 21:03:54 vipul: yer next, patch for backUps to database-api 21:04:09 yea, haven't gotten around to it 21:04:16 promise to do it this week! 21:04:28 #action Vipul to publish backup API to database-api 21:04:28 cool, can u re-action it 21:04:42 so backupRef vs backupUUID 21:04:58 i believe we decided backupRef was fine right, but it could jsut be a uuid no biggie? 21:05:01 oh nm 21:05:04 i emailed jorge 21:05:06 he never emailed me back 21:05:08 he hates me 21:05:13 #action SlickNik to finish publishing security groups API to database-api 21:05:13 ill send him another email 21:05:19 <3 SlickNik 21:05:35 I remember I started on that one, but I still have a couple of changes to it. 21:05:40 #action get ahold of jOrGeW to make sure about backupRef vs backupUUID 21:05:43 SlickNik yea i think that was abandoned 21:05:57 everuy openstack project seems to do this shit differently 21:06:02 in terms of uuid vs ref 21:06:06 I have the change, just haven't gotten around to making the couple of changes I wanted. 21:06:08 i know vipul... 21:06:11 there is no standard 21:06:14 its terrible 21:06:23 yeah, sucks. 21:06:32 no wonder George Reese is always putting the smack down 21:06:34 personally, i think of a ref being a remote system 21:06:39 oh god nooooooo 21:06:45 he's on my twitter feed 21:06:49 big time complaints :) 21:06:54 Who's George Reese? 21:07:04 enstratus 21:07:04 SlickNik: search your openstack mail 21:07:08 And why are his peanut butter cups awful? 21:07:17 grapex: !!! 21:07:24 hub_cap: That was awesome 21:07:25 hub_cap: will do… 21:07:33 What's up? 21:07:35 ok so back to ref vs uuid, in my brain 21:07:38 a ref is remote 21:07:41 and a uuid is local 21:08:03 lacking context, it seems the 'uu' part of 'uuid' disagrees with that 21:08:15 nice 21:08:17 heh... had to bring that up 21:08:32 sorry my definition of local is not correct 21:08:39 local being controlled by reddwarf 21:08:47 as opposed to controlled by a 3rd party system 21:08:53 yes uu still applies :) 21:09:02 in that case we should go with UUID then 21:09:12 well thats what im leaning toward 21:09:16 but let me just touch back w/ jorge 21:09:25 its fairly easy to change right? 21:09:30 Yea pretty minor 21:09:31 how abut backupID? 21:09:32 it's ref now 21:09:38 not UUID 21:09:40 Id might be better than uuid 21:09:42 yea that's probably better 21:09:47 It's ref now, but easily changed... 21:09:59 so BackUpId 21:10:00 :P 21:10:00 I like backupId 21:10:06 Sorry gang, my IRC client had a visual glitch- are we talking about using ID or UUID for what's now known in the client as "backupRef?" 21:10:09 k, we'll wait for Jorje? 21:10:11 jorge 21:10:20 ya but lets lean heavily toward backupId 21:10:21 yes, grapex 21:10:26 Ok 21:10:30 steveleon: can we change that now then? 21:10:35 esmute ^ 21:10:38 grapex: lets go back to yoru action item 21:10:50 xml lint integration in reddwarf grapex 21:11:22 Sorry, still nothing so far. Had a conference last week which threw me off track. 21:11:30 fo sure, plz re-action it 21:12:04 Ok 21:12:10 ok so lets say we are done w action items 21:12:22 yeah we can change it.. 21:12:33 i will have to change the rd-client that just got merged a few hours ago too 21:12:34 #topic Status of CI/jenkins/int-tests 21:12:43 esmute: okey 21:12:48 esmute: thanks 21:13:08 So not having a int-test gate has been killing us it seems 21:13:11 vipul: its all yo mang 21:13:28 SlickNik and I are working on a jenkisn here at HP that will listen to gerrit triggers 21:13:33 and give a +1 / -1 vote 21:13:41 ok it can be nonvoting too 21:13:47 got it sort of working, but the plugin we use to spin up a VM need some love 21:13:49 if thats hard ro anything 21:13:53 AHH 21:13:54 should it be more like check/cross then? 21:13:58 are u using the jclouds one? 21:14:06 no, home grown 21:14:06 datsun180b: j/y 21:14:09 jruby thingie 21:14:11 considering that builds that don't pass int-tests aren't worth shipping? 21:14:12 oh fun vipul 21:14:16 nope, it's something that one of the folks here came up with. 21:14:19 datsun180b: correct 21:14:29 Yea but i think we want voting 21:14:34 SlickNik: do you guys adhere to the openstack api internally? if so the jclouds one is bomb 21:14:55 hub_cap: We shoudl try the jclouds one.. honestly haven't event tried it 21:15:00 Yeah, it needs a couple of changes to be able to pass the gerrit id's from the trigger to the new instance it spins up. 21:15:01 its great 21:15:10 itll spawn a server, if it fails itll spawn a new one 21:15:13 it sets up keys to ssh 21:15:21 it does a lot of work for u 21:15:23 hub_cap, do you have a link to the jclouds plugin you speak of? 21:15:24 one other thing missing is checking to see if tests passed or not.. 21:15:44 https://wiki.jenkins-ci.org/display/JENKINS/JClouds+Plugin 21:15:46 #link https://wiki.jenkins-ci.org/display/JENKINS/JClouds+Plugin 21:15:47 currently can run them, but no check to see if it worked properly 21:15:53 hub_cap: thanks! 21:16:02 grep for OK (Skipped=) 21:16:05 vipul: ahh, i think that the jclouds plugin will fix that 21:16:07 at minimum 21:16:16 yea, that's something we're trying to get added to our jruby plugin 21:16:23 itll fail if the int-tests emit a error code 21:16:24 hub_cap: Jclouds does that already? 21:16:34 even better 21:16:37 well u just tell jclouds to exectue X on a remote system 21:16:40 and if X fails, it fails teh job 21:17:18 hub_cap: so jenkins plugin is building ajenkins slave? or arbitrary vm 21:17:28 cuz i don't care for the jenkins slave.. just want a vm 21:17:56 vipul: thre is not much difference between them, but it can easily do arbitrary vm 21:18:14 vipul: Does StackForge CI use the jclouds plugin and make it an official Jenkins slave or does it just create a VM without the jenkins agent? 21:18:16 i like the idea of int-tests running on a machine that doesn't persist between builds and so doesn't rely on manual monkeying for tests to work 21:18:25 they have a pool of servers grapex 21:18:30 it _is_ a slave in terms of jenkins but thats convenient for making sure the node comes online etc 21:18:31 not sure exactly how they allocate them 21:18:36 datsun180b: mee too. 21:18:52 They have home-grown scripts to allocate them… 21:18:55 datsun180b: yep, fresh instance each time 21:19:14 anyhoo, i say look into it 21:19:16 SlickNik: home-grown instead of using the jenkins agent? 21:19:20 it may or may not 21:19:23 work for u 21:19:26 I'm not pro or con Jenkins agent btw, just curious 21:19:35 grapex: the ci team? ya its all homegrown :) 21:19:43 Yea... so still a WIP.. i think we need to give this a bit more time.. 21:19:50 BUT we're getting close 21:19:56 last week all tests passed 21:20:03 hell yes 21:20:15 even if its nonvoting and it triggers and we can just look @ it b4 approving 21:20:18 thats a good step 1 21:20:24 lets just get it runnin 21:20:33 We get the voting part from the gerrit trigger. 21:20:36 so we can stop comitting code that fails 21:20:43 yep, can't wait 21:20:44 +40 21:20:57 +! 21:20:57 im fine w/ it always voting +1 since it doesnt tell if it passes or fails yet 21:21:00 And I've set up the accounts to be able to connect to gerrit. 21:21:05 lets just get a link put up 21:21:26 OH and need to do openID integration 21:21:27 yeah, we probably need to run the int-tests locally before checking 21:21:32 rather than taking it to the finish line fully working 21:21:41 #action Vipul and SlickNik to update on status of VM Gate 21:21:43 I meant checking in 21:21:45 lets get a baton pass by getting it running for each iteration asap ;) 21:21:46 agreed hub_cap 21:21:59 We need this goodness! :) 21:22:02 yup 21:22:17 #action stop eating skittles jelly beans, they are making me sick 21:22:26 ok we good on ci? 21:22:27 thanks for actioning, Vipul 21:22:32 i think so 21:22:35 #Backups Discussion 21:22:38 status first 21:23:00 i thnk juice / robertmeyers / SlickNik you're up 21:23:29 backups are good, lets do it 21:23:34 So we got a sweet merge from robertmyers with his streaming/mysqldump implementation... 21:23:56 to our shared work in progress repo. 21:24:04 robertmyers: lol 21:24:09 we need a good way to run the restore 21:24:40 are we trying to get the backup _and_ restore in one fell swoop? 21:24:46 or are we going to break it up to 2 features? 21:24:49 I am working on hooking up our innobackupex restore implementation to it. (Testing it out now, really) 21:24:55 since we havent nailed the api to omuch for the restore etc 21:25:03 i think we have hub_cap 21:25:06 that's the backupRef peice 21:25:08 well, we should at least have a plan 21:25:14 I think esmute has the API/model pieces for both ready to go. 21:25:15 i agree we need a plan 21:25:22 oh well then SlickNik if its taht easy 21:25:41 I'll let esmute comment. 21:25:42 :) 21:25:43 hub_cap: so the backupRef vs backupId discussion is related to restore 21:25:53 yup... just need to do some renaming from ref to id 21:25:54 where we create a new instance, and porivde the backup ID 21:25:58 that's the API 21:25:58 there may be extra things we need like to reset the password 21:26:01 But the plan was to check with him and push those pieces up for gerrit review. 21:26:02 am i missing something? 21:26:27 robertmyers: could they do that after the restore? 21:26:30 robertmyers: I was wondering about that. 21:26:56 we could do it automatically after the restore 21:27:15 which password? the root user? os_admin? 21:27:15 should they get the original password by default? 21:27:17 they may want to use all the same uses/etc 21:27:29 robertmyers: who would the user get the new password 21:27:54 I think the root mysql user password will need to be reset 21:27:56 juice: it comes back in the POST response body for create 21:28:06 so i thought we'd slide the restore piece into the current 'prepare' workflow which i beleive does that after the data files ar ein place? 21:28:10 robertmyers: yes it would 21:28:19 or you can do a separate call as robertmyers said 21:28:34 and it shouldnt be enabled by default since new instances dont come w/ root enabled by default 21:28:52 got it 21:28:57 <3 21:29:18 and the osadmin user/pass might be goofy 21:29:46 im assuming we are pullin in the user table 21:30:03 so given that, we will have a user/pass defined for that, as well as a root pass 21:30:09 that is the plan, a full db backup 21:30:12 Yeah, we're pullin in the user table as part of restore. 21:30:25 so we might have to start in safe mode, change the passes, and then restart in regular mode after writing osadmin to the config 21:31:03 What's the behavior if a db with root enabled is backed up? 21:31:07 (on restore) 21:31:23 id say do _not_ enable root 21:31:26 no matter what 21:31:34 #agreed 21:31:37 cuz that needs to be recorded 21:31:44 and it becoems a grey area for support 21:31:58 So the restored instance is the same except with root _not_ enabled…? 21:32:16 correct 21:32:24 since enable root says "im giving up support" 21:32:31 and a different password for os_admin 21:33:02 gotcha vipul. 21:33:34 so great work on status team 21:33:38 now division of labor 21:33:41 whos doin what 21:33:45 cuz i aint doin JACK 21:33:47 Just one clarification. 21:33:50 wrt backups 21:33:52 yes SlickNik sup 21:34:06 So it's fine for them to backup from an instance on which they have given up support and restore to an instance for which they will have support. 21:34:41 hmm thats a good point of clarification 21:34:43 that's tricky.. 21:34:50 cuz we don't know what they may have changed 21:34:56 ok so given that 21:35:04 lets re-record that root was enabled on it 21:35:12 and keep the same root pass 21:35:20 sounds like the right thing to do 21:35:22 really its the same database 21:35:30 imsplitbit: for some backup strategies, doesn't the user info get skipped? 21:35:33 so the ony pass that should change is os_admin cuz thats ours 21:36:06 Maybe I'm thinking back to an earlier conversation, but I remember this came up and the idea was the admin tables wouldn't be touched on restore. 21:36:21 grapex: i think that was b4 mysqldump righ? 21:36:46 grapex: you can choose which tables to include in backup 21:37:00 hub_cap: Maybe, it seems like I might be speaking crazy here. 21:37:09 I think we want to do all and get the users 21:37:09 i think grapex is alluding to a conversation that was had regarding a internal product here 21:37:11 vipul: For iter 1 let's just do the full thing and remember what the root enabled setting was 21:37:41 yup just make sure to re-record the root enalbed setting w/ the new uuid, and leave teh root pass the same 21:37:44 hub_cap: No, it was earlier than that, talking about import / export... n/m. For iter 1 you guys are right and we should record the setting. 21:37:45 grapex / vipul / hub_cap: I like grapex's iter 1 idea for now. 21:37:46 update os_admin 21:37:46 not sure about mysqldump.. but xtrabackup supports expressions to exclude /incdlue tables 21:37:57 vipul: same w/ mysqldump 21:38:05 so then we could make a call now 21:38:15 if we want to start with a fresh set of users each time 21:38:19 then we just exclude it now 21:38:32 naw i dont think so, it doesnt make sense to _not_ include users 21:38:39 For imports it might- 21:38:49 even if so, u still have the root enalbed issue 21:38:51 that's down the road though 21:38:51 well, I think that can be set by the implementation 21:38:51 and to get manageability on restore back 21:38:54 Well, from a users perspective, if I've done a bunch of work setting up new users, I don't want to have to redo that on restore, though... 21:38:58 yea nvm 21:39:02 you still have other tables 21:39:09 lets go w/ all or nothing as of now :) 21:39:16 we are devs, we dont know any better :D 21:39:24 let some mysql admins tell us we are doing it wrong later 21:39:25 ;) 21:39:42 * grapex blows horn to summon imsplitbit 21:39:42 we can add a flag later to support this use case 21:39:49 well, right now the command is plugable 21:39:51 #agreed w/ grapex iter 1 21:39:57 i say we move on 21:39:59 so it can be easily changed 21:40:06 tru robertmyers 21:40:08 division of labor 21:40:11 sounds good, thanks for clarification. 21:40:11 whos doin what 21:40:35 * robertmyers will work on all the fun parts 21:40:39 lol 21:40:46 haha 21:40:58 I'm working on the innobackupex pluggable part. 21:41:40 right now I'm looking at the backup model to see if we can remove logic from the views 21:42:00 like a test to see if a job is running 21:42:25 anyone doing the streaming download? 21:42:30 robertmyers: what is your intention for work on the restore? 21:42:50 vipul: I think the download is a lot more straightforward than the upload 21:43:06 well, I was thinking that we create a registry, and look up the restore process from the backup type 21:43:25 since swift handles the reassembly of the pieces … or at least that is what I read in the documentation 21:44:07 robertmyers: do we do that or just mirror the configuration that is done for the backup runner? 21:44:18 juice: yes if you download the manifest it pulls down all 21:44:36 id say lets think we are doing 1x backup and restore type for now 21:44:36 robertmyers, do we need a registry? It makes sense to have the restore type coupled with the backup_type, right? I don't see a case where I'd backup using one type, but restore using another... 21:44:45 correct, for now 21:44:51 in the future we will possibly have that 21:44:57 well, since we are storing the type, one might change the setting over time 21:44:57 hub_cap, that was my thinking for now, at least. 21:44:59 a user uploads a "backup" of their own db 21:45:29 robertmyers: i dont think that we need that _now_ tho 21:45:42 dont' we already have the use case of 2 types? 21:45:43 that could happen in teh future, and we will code that when we thik about it happening 21:45:47 xtrabackup and mysqldump 21:45:51 No i'm talking about us changing the default 21:45:52 I agree 21:46:11 Let's just put in types now. 21:46:11 vipul: but xtrabackup will have its own restore, and so will mysqldump right? 21:46:21 grapex: types are in teh db i think arelady 21:46:22 right? 21:46:27 right but you need ot be able to look it up since it's stored in the DB entry 21:46:27 so we store the backup_type in the db and us that to find the restore method 21:46:42 so what wil this _restore method_ be 21:46:46 it's really a mapping.. 'xtrabackup' -> 'XtraBackupRestorer' 21:46:48 grab a file from swift and stream it in? 21:46:59 vipul: yes 21:47:02 the xtrabackup file cant be streamed back in? 21:47:06 like a mysqldump file 21:47:17 well, that part will be the same 21:47:29 it needs to be streamed to xbstream to decompress it. 21:47:30 this discussion is do we use configuration to more or less statically choose the restore type or do we use some component that chooses it based off of the backup type? 21:47:33 but the command to run will be differrent 21:47:39 But then it has an extra step of running the "prepare" 21:47:49 im confused 21:48:03 w/ xtra do u not do, 1) start reading from swift, 2) start streaming to mysql 21:48:06 download then backup 21:48:09 like u do w/ mysqldump 21:48:13 download is the same for either case 21:48:22 mysql < dumpfile 21:48:26 hub_cap: no... you don't pipe it in 21:48:32 backup process may vary yes? 21:48:34 thats just terrible 21:48:38 :) 21:48:42 you have to 'prepare' which is a xtrabackup format -> data files 21:48:53 then you start mysql 21:49:22 hub_cap: db consistency isn't guaranteed unless you run prepare for xtrabackup. 21:49:26 ok lets go w/ what robertmyers said then.... i thoguht they were tehe same 21:49:26 same download + different restore + same startup 21:49:36 is it the same startup? 21:49:39 one assumes mysqsl is up and running 21:49:47 other assumes it's down.. and started after restore 21:50:23 Seems like it's different. I think for mysqldump, mysql already needs to be running so it can process the logical dump. 21:50:27 ok so lets not worry bout the details now that we _know_ its different 21:50:29 vipul: yeah. 21:50:44 lets just assume that we need to know how to restore 2 different types, and let robertmyers and co handle it accordingly 21:51:08 robertmyers: so where do store the dump? 21:51:18 assume that there is enough space in /vda? 21:51:31 or actually you stream directly to mysql 21:51:46 where xtrabackup streams directly to /var/lib/mysql 21:51:47 good question, we may need to check for enough space 21:52:11 we can see if streaming is possible 21:52:12 mysql < swift download 'xx'? 21:52:19 mysqldump shouldnt store the dump i think 21:52:25 stream FTW 21:52:31 I think you may be able stream it to mysql directly. 21:53:26 lets assume yes for now, and if not, solve it 21:53:38 i _know_ we can for mysqldump 21:54:12 moving on? 21:54:27 oh, one other clarification. 21:54:31 kk 21:55:06 I'll probably be done looking at the xtrabackup backup piece by today/tom. 21:55:24 and so juice and I can start looking at restore. 21:55:36 cool 21:55:41 so on to notifications 21:55:43 #topic Notifications Plan 21:55:52 vipul: batter up! 21:55:52 cool, thanks. 21:56:14 I updated the wiki with our notifications 21:56:17 SO thanks to robertmyers for filling out hte info in wiki 21:56:25 i wanted to see where this is on your radar 21:56:26 thanks #robertmyers. 21:56:31 in terms of pushing up the code 21:56:36 otherwise we can start adding it in 21:56:50 now that we have a design for what we need to do.. 21:56:55 also wanted to see how you emit 'exists' events 21:56:57 well, we have it all written... so we should make a patch 21:57:17 vipul: Describe an "exists" event. 21:57:19 do we have a periodic task or something? 21:57:30 that goes through and periodically checks every resource in the DB 21:57:39 vipul: We do something like that once a day. 21:57:41 we have a periodic task that runs 21:57:49 isint that _outside_ of reddwarf? 21:58:03 yes 21:58:09 would reddwarf _need_ to emit these? 21:58:15 hub_cap: I don't think it should. 21:58:31 Well it seems that every 'metering' implementation has exists evetns 21:58:50 vipul: sure but somethign like cielometer shoudl do that 21:58:51 so it seems anyone using reddwarf woul dhave to build one 21:59:00 notifications are based on events that happen 21:59:00 vipul cp16net: What if we put the exist daemon into contrib? 21:59:23 i personally disagree w/ exists events too, so it may color my opinion :) 21:59:37 hub_cap: Honestly, I don't like them at all either. :) 21:59:38 contrib sounds fine to me grapex 22:00:05 i dont think that nova sends exists events vipul 22:00:14 it's easy enough to write one.. i just feel that's it's kinda necessary.. 22:00:15 it sends events based on a status change 22:00:23 it might not be part of core.. not sure actually 22:00:23 vipul: Ok. We're talking to this goofy external system, but we can find a way to seperate that code. If there's some synergy here I agree we should take advantage of it. 22:00:44 its necessary for our billing system, but i dont think reddwarf needs to emit them. they are _very_ billing specific 22:01:03 but im fine w/ it being in contrib 22:01:11 So how does Nova emit these events? 22:01:22 i dont think nova does grapex 22:01:23 Or rather, where? In compute for each instance? 22:01:25 nova does the same thing as reddwarf using oslo notifications 22:01:34 events == notifications roughly 22:01:49 to my mind at least 22:01:57 sorry guys I got pulled away but I'm back now 22:01:58 yep agreed interchangeable 22:01:58 https://wiki.openstack.org/wiki/SystemUsageData#compute.instance.exists: 22:02:16 not sure if this is old or not 22:02:27 Hmm 22:02:30 there is a volume.exists.. so it's possible that there is something periodic 22:02:50 vipul: We should probably talk more after the meeting 22:02:54 if there are exists events _in_ the code, then im ok w/ adding them to our code 22:03:01 but god i hate them 22:03:24 grapex: sure 22:03:29 My only concern with combining efforts is if we don't quite match we may end up complicating both public code and both our billing related efforts by adding something that doesn't quite fit. 22:03:54 if we keep it similar to what robertmyers published i think it'll be fairly generic 22:04:01 and we need them for our billing systme :) 22:04:32 https://wiki.openstack.org/wiki/NotificationEventExamples#Periodic_Notifications: 22:04:39 vipul: OK. He or I will be doing a pull request for notifications stuff very soon 22:04:43 if nova already does this grapex maybe we are duplicating effort! 22:04:43 within the week, hopefully 22:04:51 grapex: sweet! 22:05:13 but just cuz there is a wiki article doesnt mean its up to date 22:05:23 Nice. 22:05:26 hub_cap: even if nova emitted events, I think reddwarf should be the 'source of truth' in terms of timestamps and whatnot 22:05:27 hub_cap: if it's on the internet it's true 22:05:33 vipul: Agreed 22:05:46 vipul: ya i didnt mean use novas notification 22:05:49 vipul: Working backwards from Nova to figure out what a "Reddwarf instance" should be could lead to issues... 22:05:52 intruenet... 22:05:54 i meant that we might be able to use their code :) 22:05:55 yep 22:05:57 to emit ours 22:05:59 right.. ok 22:05:59 hub_cap: Sorry for the misinterpretation 22:06:19 no worries 22:06:23 cool.. i think we're good on this one.. 22:06:26 let's get the base in.. 22:06:30 def 22:06:31 and can discuss periodic 22:06:34 if need be 22:06:42 #link https://wiki.openstack.org/wiki/NotificationEventExamples 22:06:56 #link https://wiki.openstack.org/wiki/SystemUsageData#compute.instance.exists: 22:06:59 just in case 22:07:09 awesome thanks 22:07:36 #action grapex to lead the effort to get the code gerrit'ed 22:07:46 #dammit that doestn give enough context 22:07:58 there should be an #undo 22:08:02 #action grapex to lead the effort to get the code gerrit'ed for notifications 22:08:07 lol vipul ya 22:08:11 or a #reaction 22:08:21 #RootWrap 22:08:24 lol 22:08:26 #topic RootWrap 22:08:31 so lets discuss 22:08:36 ok this one is around Guest Agent.. 22:08:41 where we do 'sudo this' and 'sudo that' 22:08:59 turns out we can't really run gueat agent wihtout giving the user sudoers privileg 22:09:05 fo shiz 22:09:11 #link https://wiki.openstack.org/wiki/Nova/Rootwrap 22:09:16 so we should look at doing the root wrap thing there 22:09:20 * datsun180b listening 22:09:45 yes but we shodl try to get it moved to common if we do that ;) 22:09:48 rather than copying code 22:09:51 I believe it's based on config where you specify everything you can do as root.. and only those things 22:09:58 sounds about right 22:09:59 hub_cap: it's alrady in oslo 22:10:00 It's already in oslo, I believe. 22:10:20 We need to move to a newer version of oslo (which might be painful) though 22:10:42 datsun180b: I think the challenge will be to define that xml.. with every possible thing we want to be able to do 22:10:54 but otherwise probably not too bad 22:10:58 so maybe we BP this one 22:11:02 we've got a little experience doing something similar internally 22:11:12 vipul: YESSSSS 22:11:13 I think we should bp it. 22:11:14 i don't think a BP would hurt one bit 22:11:28 I hate the fact that our user can sudo indiscriminately... 22:11:44 yup makes hardening a bit difficult 22:12:08 well if we've got sudo installed on the instance what's to stop us from deploying a shaped charge of a sudoers ahead of time 22:12:13 spitballing here 22:12:36 aren't there provisos for exactly what commands can and can't be run by someone granted powers 22:13:00 you mean configure the sudoers to do exactly that? 22:13:05 sudoers is pretty flexible :) 22:13:19 sure but so is rootwrap :) 22:13:19 right, if we know exactly what user and exactly what commands will be run 22:13:26 and its "known" and it makes deployments easier 22:13:32 1 line in sudoers 22:13:33 what, rootwrap over sudoers? 22:13:34 rest in code 22:13:43 yes rootwrap over sudoers 22:13:45 probably should go with the common thing.. 22:13:48 since thats the way of the openstack 22:14:01 yeah, but I don't think you can restrict arguments and have other restrictions. 22:14:09 you can do line line in sudoers too, just a folder location 22:14:44 sure u can do all this in sudoers 22:14:48 and in rootwrap 22:14:54 and prolly in _insert something here_ 22:14:59 options! 22:15:04 but since the openstack community si going w/ rootwrap, we can too 22:15:18 * datsun180b almost mentioned apparmor 22:15:22 hub_cap: I think root_wraps justification is that it is easier to manage than sudoers 22:15:28 lol@datsun180b 22:15:47 yes juice and that its controlled in code vs by operations 22:16:01 https://wiki.openstack.org/wiki/Nova/Rootwrap#Purpose 22:16:43 +1 for root wrap 22:17:05 +1 for rootwrap 22:17:15 +100 for common things shared between projects 22:17:21 So I can start a BP for this one.. hub_cap just need to get us a dummy bp 22:17:31 +1 for rootwrap 22:17:53 -1, the first step of rootwrap in that doc is an entry in sudoers! 22:18:07 i'm not going to win but i'm voting on the record 22:18:08 Ah, did we run out of dummies already? 22:18:16 vipul: https://blueprints.launchpad.net/reddwarf/+spec/parappa-the-rootwrappah 22:18:27 nice name 22:18:36 hub_cap: that is the greatest blue print name of all time. 22:18:36 datsun180b: read the rest of the doc then vote ;) 22:18:40 :P 22:18:59 it looks to be about par for nova 22:19:08 there was _much_ discussion on going to rootwrap 2 version agao 22:19:10 *ago 22:19:57 movion on? 22:20:00 Are we good with rootwrap? 22:20:03 sounds good. 22:20:09 oh yes.. i think we're good 22:20:20 #topic quota tests w/ xml 22:20:29 yes let's 22:20:41 grapex: lets chat about that 22:20:47 hub_cap: Sure. 22:21:10 It looks like the "skip_if_xml" is still called for the quotas test, so that needs to be turned off. 22:21:21 https://github.com/stackforge/reddwarf/blob/master/reddwarf/tests/api/instances.py , line 243 22:21:45 i thought we were fixing this a week ago 22:21:49 maybe that was for limits 22:22:25 esp1: weren't you the one that had a patch? 22:22:34 vipul: Quotas was fixed, but this was still turned off. I was gone at the time when the test fixes were merged, so I didn't see this until recently... sorry. 22:23:06 vipul: yeah 22:23:25 I can retest it if you like. 22:23:45 but I'm pretty sure they were working last week. 22:24:13 is the flag still in the code? 22:24:33 esp1: The issue is in the second test run - right now if "skip_with_xml" is still called, the tests get skipped in XML mode. That one function needs to be removed. 22:24:36 esp1: https://github.com/stackforge/reddwarf/blob/master/reddwarf/tests/api/instances.py#L243 22:24:38 ps grapex, if u do github/path/to/file.py#LXXX it will take u there 22:24:44 grapex: like that :P 22:24:49 hub_cap: Thanks for the tip... good ole github 22:24:51 grapex: ah ok. 22:25:12 easy enough to reenable the tests, the hard part is making sure we still get all-green afterward 22:25:13 I think I saw a separate bug logged for xml support in quotas 22:25:17 esp1: Sorry, I thought I'd made a bug or blueprint or something for this explaining it but I can't find it now... *sigh* 22:25:25 esp1: Maybe that was it 22:25:46 grapex: I think you did. I can pull it up and put it on my todo list 22:25:50 So in general, any new feature should work with JSON and XML out of the gate... the skip thing was a temporary thing to keep the tests from failing. 22:25:57 +1billion 22:26:09 esp1: Cool. 22:26:15 I agree. +1 22:26:18 np 22:26:33 #link https://bugs.launchpad.net/reddwarf/+bug/1150903 22:26:33 esp1: One more tiny issue 22:26:39 yep, 22:27:07 esp1: that test needs to not be in the "GROUP_START", since other tests depend on that group but may not need quotas to work. 22:27:13 Oh awesome, thanks for finding that. 22:27:43 grapex: ah ok. yeah I remember you or esmute talking about it. 22:27:57 grapex: is there a doc'd bug for that? 22:28:00 I'll take care of that bug too. (maybe needs to be logged first) 22:28:12 #action esp1 to re-enable quota tests w/XML support and remove them from GROUP_START 22:28:30 perfect, we good on that issue? 22:28:43 hub_cap: Looks like it. 22:28:53 sounds good 22:28:54 and delete the 'skip_if_xml' method :) 22:29:00 all together 22:29:01 right 22:29:04 Sounds good 22:29:06 sure why not. 22:29:07 Thanks esp1 22:29:30 baby in ihandss 22:29:43 sry 22:29:44 what is the xml support? 22:29:45 #topic Actions / Action Events 22:29:52 does it improve your spelling? :) 22:30:02 lol no 22:30:05 its terrible either way 22:30:26 esmute: the python client can do both json and xml.. we run tests twice, once with xml turned on and once without 22:30:36 so i thoguth of 3 possible ways to do actions and action_events 22:30:51 esmute: we support both JSON and XML in the Web Service API 22:31:00 1) pass a async response uuid back to asyn events and poll based on that (our dnsaas does this for some events) 22:31:09 lemme find the email and paste it 22:31:19 thanks vipul, esp1... is the conversion happening in the client? 22:31:41 1) Async callbacks - a la DNS. Send back a callback uuid that a user can query against a common interface. This is more useful for things that do not return an id, such as creating a database or a user. See [1] for more info. For items that have a uuid, it would make more sense to just use that uuid. 22:31:46 2) HEAD /whatever/resource/id to get the status of that object. This is like the old cloud servers call that would tell u what state your instance was whilst building. 22:31:50 3) NO special calls. Just provide feedback on the GET calls for a given resource. This would work for both items with a uuid, and items without (cuz a instance has a uuid and u can append a username or dbname to it). 22:31:54 [1] http://docs.rackspace.com/cdns/api/v1.0/cdns-devguide/content/sync_asynch_responses.html 22:31:56 esmute: sorta I'll walk you through it tomorrow :) 22:32:01 cool 22:32:04 i think that #3 was the best option for uniformity 22:32:27 does anyone feel same/different on that? 22:32:54 wait so this is how does the user determine the status of an action (like instance creation state)? 22:33:03 3 is what we do right 22:33:04 today 22:33:08 correct 22:33:13 but it gives no status 22:33:16 err 22:33:19 it gives no description 22:33:21 or failure info 22:33:22 hub_cap: Do you mean uniformity between other OS apis? 22:33:36 grapex: uniforimity to what nova does 22:33:45 and uniformity as in, itll work for actions that dont have uuids (users/dbs) 22:34:00 hub_cap: I think we should go for #1. I know it isn't the same as nova but I think it would really help if we could query actions like that. 22:34:10 Eventually some other project will come up with a similar idea. 22:34:39 my thought is to start w/ #3 22:34:51 since itll be the least work and itll provide value 22:34:53 in #1, the user is providing a callback (url or something)? 22:34:53 So, if I understand correctly 3 is to extend the GET APIs that we have today to also provide the action description. 22:34:56 hub_cap: That makes sense, as long as #1 is eventually possible 22:34:59 essentially #3 is #1 22:35:03 but w/ less data 22:35:09 thats why i was leaning toward #3 22:35:21 Yeah, sorry... if we have unique action IDs in the db we can eventually add that and figure out how the API should look 22:35:22 #1 seems more like a PUSH model.. where reddwarf notifies 22:35:26 the only reason u ened a callback url in dns aas is cuz they dont control the ID 22:35:56 well they are all polling honestly but i thikn i see yer point vipul 22:36:30 i honestly dislike the "callback" support 22:36:39 becasue whats the diff between these scenarios 22:36:45 1) create instance, get a uuid for the instance 22:36:52 crap let me start over 22:37:03 1) create instance, get a uuid for the instance, poll GET /instance/uuid for status 22:37:25 2) create instance, get new callback uuid and uuid for instance, poll GET /actions/callback_uuid for status 22:37:32 otehr thatn 2 is more work :P 22:37:40 that's not very clean 22:37:54 if you're going to do 2) then we should be pushing to them.. invoking the callback 22:38:05 ya and we wont be doing that anytime soon :) 22:38:18 all in favor for the "Easy" route, #3 above? 22:38:27 I 22:38:29 Aye 22:38:31 I'm sorry, I'm confused. 22:38:33 eye 22:38:36 eye 22:38:40 lol vipul 22:38:50 grapex: gohead 22:38:56 #2 - you just mean the user would need to poll to get the status? 22:39:04 correct just like dns 22:39:21 How would 1 and 2 map to things like instance resizes? 22:39:40 http://docs.rackspace.com/cdns/api/v1.0/cdns-devguide/content/sync_asynch_responses.html 22:40:01 GET /instance/uuid vs GET /instance/callback_uuid_u_got_from_the_resize 22:40:17 GET instance/uuid alreayd says its in resize 22:40:24 this will jsut give u more info if something goes wrong 22:40:32 really the diffence is GET /resourceID vs GET /JobID 22:40:33 which was the original point of actions in the first place 22:40:38 Honestly the only reason I'd consider 2 would be if there were actions that are mapped to things other than resources (or across multiple resource). 22:40:51 SlickNik: That's my concern too. 22:41:08 we cross that bridge when we come to it 22:41:21 ^ ^ my favorite phrase :) 22:41:24 Ok- as long as we can start with things as they are today 22:41:27 do we want to consider everything a Job? 22:41:32 and each action has its own unique ID 22:41:39 grapex: it does/will 22:41:42 Or maybe a "task"? 22:41:51 That our taskmanager can "manage"? :) 22:41:54 heh 22:42:16 lol grapex 22:42:19 heh 22:42:25 Actually live up to it's name finally instead of being something we should've named "reddwarf-api-thread-2" 22:42:26 ehe 22:42:40 that might have been the intention.. but we don't do a whole lot of managing task states 22:42:44 reddwarf-handle-async-actions-so-the-api-can-return-data 22:42:49 we record a task id i believe.. but that's it 22:42:56 vipul: Yeah its pretty silly. 22:43:14 Well I'm up for calling it action or job or task or whatever. 22:43:21 hub_cap: Nova calls it action already, right? 22:43:32 nova calls it instance_action 22:43:37 cuz it only applies to instances 22:43:38 gross 22:43:43 Ah, while this would be for anything. 22:43:52 im calling it action cuz its _any_ action 22:44:00 likely for things like create user 22:44:01 task would kind of make sense. But I'm game for any name. 22:44:07 ill do instance uuid - username 22:44:16 as a unique id for it 22:44:19 backup id 22:44:25 lets call it poopoohead then 22:44:30 and poopoohead_actions 22:44:51 lol! 22:44:52 hub_cap: hope that's not inspired by holding a baby in your hands 22:44:54 hub_cap: I think we can agree on that. 22:44:55 sounds like a mess 22:44:57 HAHA 22:45:01 nice yall 22:45:12 hub_cap does it only apply to async things? 22:45:23 likely 22:45:32 since sync things will return a error if it happens 22:45:47 but it can still record sync things if we even have any of those 22:45:50 that arent GET calls 22:45:59 basically anything that mods a resource 22:46:18 So I'm down for going route #3, which if I understand it means we really won't change the API at all but just add this stuff underneath 22:46:37 i'm assuming we add a 'statusDetail' to the response of every API? 22:46:55 to the GET calls vipul likely 22:47:03 because it seems like this gets us really close to tracking, which probably everyone is salivating for, and we may want to change the internal DB schema a bit over time before we offer an API for it. 22:47:10 only the async GETs, I thought. 22:47:33 def grapex 22:47:43 So instance get has a "statusDetail" as well? 22:48:03 likely all GET's will have a status/detail 22:48:05 So there's status and then "statusDetail"? That implies a one to one mapping with resources and actions. 22:48:17 maybe not if it is not a failure 22:48:18 Assuming "statusDetail" comes from the action info in the db. 22:48:37 that's my understanding as well grapex 22:48:59 it implies a 1x1 mapping between a resource and its present state 22:49:14 it wont tel u last month your resize failed 22:49:23 itll tell you your last resize failed if its in failure state 22:49:27 hub_cap: But that data will still be in the db, right? 22:49:35 fo shiiiiiiiz 22:49:37 Would a flavor GET need a status/detail? 22:49:53 prolly not since that would be static data 22:49:59 correct 22:50:00 Ok. Honestly I'm ok, although I think statusDetail might look a little gross. 22:50:03 For instance 22:50:06 if a resize fails 22:50:14 today it goes to ACTIVE status and gets the old flavor id again. 22:50:32 So in that case, would "statusDetail" be something like "resize request rejected by Nova!" or something? 22:51:09 Because that sounds more like a "lastActionStatus" or something similar. "statusDetail" implies its currently in that status rather than being historical. 22:51:18 that is correct 22:51:22 i guess that could get itneresting if you have two requests against a single resource 22:51:24 let me look @ how servers accomplishes this 22:51:49 you may lose the action you care about 22:51:52 * hub_cap puts a cap on meeting 22:51:59 lets discuss this on irc tomorrow 22:52:05 its almost 6pm in tx 22:52:23 and i have to go to the bakery to get some break b4 it closes 22:52:33 i will say that there is more thinking that needs to go into this bp 22:52:39 Sounds good. Want to think about this a bit more as well. 22:52:41 and ill add to the bp( which is lackig now) 22:52:47 SlickNik: agreed 22:52:56 Maybe we should discuss moving the meeting an hour earlier 22:53:01 yup good talk 22:53:12 not a bad idea 22:53:14 A few people had to go home halfway through today since it's been raining hard here 22:53:26 a little rain gets in the way? 22:53:35 i'm game for 1pm PST start 22:53:38 Which in Texas happens so rarely it can be an emergency 22:53:40 I'd be up with that, too 22:53:40 this is austin, rain is a rarer sight than UFOs 22:53:41 vipul: lol its tx 22:53:47 rain scares texans 22:53:51 It's probably like snow in Seattle. :) 22:53:58 or sun 22:53:59 or sun 22:54:01 damn 22:54:03 you beat me to it 22:54:03 nice 22:54:05 HAHA 22:54:06 same time 22:54:33 this room always seems empty before us 22:54:39 so let's make it happen for next week 22:54:44 LOL we are the only people who use it ;) 22:54:47 grapex: we need to talk about the prezo 22:54:53 vipul: One person on the team said they needed to go home to roll up the windows on their other car which had been down for the past five years. 22:55:01 lol 22:55:04 grapex: hahahaa 22:55:11 lolol 22:55:38 so end meeting? 22:55:42 so then next week, meeting moved to 3pm CDT/1pm PDT? 22:55:47 Real quick 22:55:54 We're all cool if hub_cap goes forward on actions right? 22:55:58 iter 1 is just db work 22:56:05 and we can raise issues during the pull request if there are any 22:56:10 yup grapex thats what im gonna push the first iter 22:56:12 Yea, let's do it 22:56:14 Cool. 22:56:17 I'm fine with that. 22:56:19 +1 22:56:21 I'm looking forward to it. :) 22:56:42 Sweetness. 22:56:54 aight then 22:56:56 #endmeeting