/srv/irclogs.ubuntu.com/2013/03/22/#juju-gui.txt

gary_posterMaking 1000 units is fun and easy in the in-memory GUI :-)00:02
gary_posterNow I have 5000!00:03
gary_posterIt's big00:03
hatchhaha00:03
* hatch waits for it to crash00:03
gary_poster:-) I was wondering about that.00:03
gary_posterI'll try 1000000:03
gary_posterstill ok00:04
gary_posterreally big boxes00:04
hatchlol00:04
gary_posterI have a chromium browser process using 825.5 M.  Maybe that's it?  I'll make 30000...00:05
hatchhahahaha00:06
gary_posterno, it was the one using 400M, 556M now00:07
gary_posterand that's a double database00:07
gary_posterone for in-memory juju, one for the GUI side00:08
hatchthat's pretty good00:10
gary_poster46000 units total00:10
hatchlol - I would be worried that the ws would be very bogged down trying to communicate that many changes00:10
gary_posteryeah00:11
gary_posterthat's the bigger concern I think00:11
hatchwell and the svg rendering00:11
gary_posternah00:11
gary_posterwe're talking units not services00:12
gary_posterI only have four services00:12
hatchohh ok00:12
gary_posterthe biggest use case we've heard of is about 14 services00:12
gary_posterand we expect to nolonger support > 3000:12
gary_posters/nolonger/not/00:12
hatchwoah ...did you just edit that line?00:13
gary_posterhatch how can I get your LGTM.  You want me to push, even with the merge, and point out what I changed?00:13
* hatch just entered the danger zone I think00:13
hatchoh no I'll just add it00:13
gary_posterhatch, that's your irc client.  It probably honors the vi style substitutions00:13
gary_posterI said s/nolonger/not/00:14
gary_posterand it did what I asked :-)00:14
hatchhahaha wow00:14
gary_posterbut over the wire it is still as I sent it00:14
hatchI thought I was going bonkers00:14
gary_posteroriginally00:14
gary_posterwell, no guarantees for not going bonkers :-)00:15
hatchhaha so true00:15
hatchchome devtools remote debugging is so cool02:53
rick_h_hatch: agreed03:02
rick_h_I need to set it up actually though still. 03:02
hatchI messed around trying to solve these android bugs for a while this afternoon - found what caused it to fail in about 1min after setting that up03:05
hatchhaha03:05
hatchno idea how to fix it yet03:05
hatchbut found the root cause :)03:05
rick_h_lol, well knowing wtf is broken is half the battle :)03:05
rick_h_I'm too tired to think straight but we should look at https://bugs.launchpad.net/juju-gui/+bug/1158613 first thing in the morning03:06
_mup_Bug #1158613: timestamp handling is not TZ aware <juju-gui:Triaged> < https://launchpad.net/bugs/1158613 >03:06
rick_h_poor huw in australia can't land a branch due to a bad test around timezone conversion lol03:06
hatchugh I spent months working on timezone aware date stuff and swore i'd never do it again03:06
hatchapparently I didn't swear loud enough03:06
hatchlol03:06
rick_h_lol, then you never saw this ... 03:06
* hatch has been waiting impatiently for the reveil03:10
hatchreveal even03:10
rick_h_reveal?03:10
hatchI was waiting for you to link to something03:10
hatch:)03:11
rick_h_the bug above?03:11
hatchno some library that solved timezone issues in javascript03:11
rick_h_oh no, just the bug comes about due to his browser/timezone saying the date is the 10th, but the test thinks it should be the 9th03:11
rick_h_so he can never pass the tests03:11
rick_h_and thus lbox denies him03:11
hatchoh right - because the test doesn't specify timezone03:12
rick_h_right03:12
rick_h_so when it's not past bedtime I'll look I guess at what the code does vs the test does and see what needs to get updated03:12
rick_h_just find it funny the poor guy can't land a branch because of his TZ03:13
rick_h_or put it up for code review even03:13
hatchlol see timezones-the-devil03:13
hatchhttp://i10.photobucket.com/albums/a121/Elvislover01/Elvislover03/TheWaterboy.jpg03:13
frankbanmorning fwereade__, thanks for your review08:59
fwereade__frankban, heyhey08:59
fwereade__frankban, helpful I hope?08:59
frankbanfwereade__: absolutely09:00
frankbanfwereade__: re "you'll need to be able to map from entity name back to collection/_id", can I assume coll/_id == entityName.split('-') and then coll += 's'?09:01
frankbanfwereade__: do we have that kind of convention?09:01
fwereade__frankban, hmm, I'm not sure we do09:02
fwereade__frankban, we *might*09:02
fwereade__frankban, but it is not something I have thought about consciously09:03
frankbanfwereade__: it seems fragile, except if there is a strong convention in that sense09:03
fwereade__frankban, indeed09:03
fwereade__frankban, probably best to make it explicit09:04
frankbanfwereade__: are you thinking about two functions, probably living in state, e.g. makeEntityName(id, coll string) string and parseEntityName(name string) (string string error)?09:06
frankbanfwereade__: and maybe a map that maps collection names to entityName prefixes09:09
fwereade__frankban, I think you only need the second function for now09:10
fwereade__frankban, but, yeah, it probably deserves to be a top-level (but unexported) function in state09:11
frankbanfwereade__: ok. so that function will explicitly use a map[entityname-prefix]coll-name, right?09:12
fwereade__frankban, implement it as it pleases you to do, I just care that it's in one place and explicit of purpose09:17
frankbanfwereade__: cool, thanks09:17
=== bcsaller_ is now known as bcsaller
gary_posterbcsaller, I'm ready to talk any time.  I have my vpn up and am staring mutely at the most recent failure13:45
gary_posterbut no rush at all :-)13:45
bcsallergary_poster: thats a good place to start :) I can join the chat in a second13:45
gary_postercool13:47
bcsallergary_poster: in chat when you're ready13:47
hatchgood morning14:02
rick_h_hatch: morning, comments for you in the review. Let me know if anything doesn't make sense. :)14:03
hatchokee14:03
hatchrick_h_ thanks - what I meant about that check in the setter was if somehow it gets passed in "@#$%" it will still pass your check and then output NaN14:06
hatchso the only thing it pretects from is empty strings14:06
hatchprotects14:06
hatchand undefined I guess14:06
rick_h_hatch: ah gotcha. I mean these are coming from a known source. I don't know it's worth going crazy on it. I guess I can run through Y.Lang.isString || Number ?14:07
hatchwell I would just dump the check all together - like you said, it's coming from a known source, and if it's ok if it has NaN/undefined as a value then it really doesn't matter14:08
rick_h_hatch: cool14:08
hatchhehe Url vs URL - that one has also always bugged me, I can't decide which one I like better - jcsackett14:10
hatch:)14:10
rick_h_I prefer lower because it starts to look too constant-y for my tastes, but it's a preference thing. Don't want to get hung up on it14:10
jcsackettrick_h_: yeah, it's not a big deal. my english major side jumped out and said "that's an acronym!". feel free to ignore the english major side. :-P14:11
hatchyay no more writeonce14:12
hatchrick_h_ I didn't know about the linter causing issues on named methods like that14:14
hatchthats...lame14:14
rick_h_hatch: yea, I guess I can move the callbacks into methods on the class but seemed...unnecessary14:15
hatchyeah I'm going to say that I THINK the preferred way is to specify a string for the fn name in the class to promote lazy loading the attributes14:16
hatchbut I'm not sure the specifics on that right now14:16
hatchI mean, it doesn't apply at all in this situation14:17
hatch:)14:17
hatchgary_poster: wrt https://bugs.launchpad.net/juju-gui/+bug/1158613 would you prefer we build the string that it's supposed to look like in the test?14:21
_mup_Bug #1158613: timestamp handling is not TZ aware <juju-gui:Triaged by hatch> < https://launchpad.net/bugs/1158613 >14:21
gary_posterhatch, yes14:22
gary_postermake sense to you, hatch?14:22
hatchyep that makes the most sense if we want to display the date in their local timezone14:23
gary_postercool14:24
Makyojujugui call now?14:30
hatchyup14:30
=== benji___ is now known as benji
=== matsubara_ is now known as matsubara
teknicorogpeppe, any idea about these test errors in trunk? http://pastebin.ubuntu.com/5637181/15:05
rogpeppeteknico: something to do with the recent stuff around version.Current, i think. you're running quantal, presumably?15:07
teknicorogpeppe, yep15:07
rogpeppeteknico: looks like it's been broken not that long ago. there's no test image data for quantal 38615:13
rogpeppeteknico: this should be fixed very soon.15:14
teknicorogpeppe, great, thanks15:14
bacfrankban: can you provide a reference in juju-core where your errors.New trick is used and checked?15:34
frankbanbac: my code changed so I didn't use that technique directly. however a quick search for errors.New gave me this example: ErrSilent in cmd/cmd.go15:40
hatchgary_poster: you asked me to teach you how to do remote debugging - https://developers.google.com/chrome-developer-tools/docs/remote-debugging this does a better job than I caould :D15:41
hatchcould* damn I can't talk today15:42
gary_posterhatch, ok awesome thanks :-)15:42
hatchif you run into issues then maybe I can help debug but as far as a step by step guide goes it's pretty awesome15:42
bacfrankban: sorry, but my internet dropped out after i sent you that request.  if you posted something could you post it again?15:48
frankbanbac: my code changed so I didn't use that technique directly. however a quick search for errors.New gave me this example: ErrSilent in cmd/cmd.go15:48
bacthanks frankban15:59
hatchgary_poster what date format are we using? ISO 8601?16:16
hatchYYYY-DD-MM16:16
hatcher16:17
gary_postertypically yyyy-mm-dd hatch16:17
hatchYYYY-MM-DD16:17
gary_postery16:17
hatchanyone looking for a break to do a small review? https://codereview.appspot.com/7722045/16:26
rick_h_hatch: looking16:28
hatchthanks16:28
hatchone more?? bueller....bueller?16:36
gary_posterlooking hatch16:42
hatchwhy thank you16:45
=== deryck is now known as deryck[lunch]
hazmatwrt to the jenkins tests we should ideally execute juju with verbose options and stdout/stderr captured so we have  a bit more context than cmd failed16:49
hatchoh believe me16:49
hatchwe've tried16:49
hatch;)16:49
hatchjenkins is all like 'debug output? - NO!'16:50
hazmatjenkins isn't the issue ..16:50
hazmatits the way shelltoolbox is being used along with the cli args to juju16:50
hazmatjenkins is clearly capturing the traceback from shelltoolbox.. but the underlying output isn't being sent back16:51
hatchohh16:51
benjihatch: here is a diff that will remove the irritating message from the end of the gjslint output: http://paste.ubuntu.com/5637488/16:51
hatchbenji: awesome :)16:52
benji(it also makes the file name line number messages nicer, I (and others I assume) have tools that interpret file locations like those)16:52
benjiit's a bit of a hack, but it should be good enough16:52
hazmatadded a card for capturing useful output on testing16:52
hatchoh great16:55
teknicobenji, thank you :-)16:58
gary_posterhatch LGTM with changes16:58
* gary_poster goes to eat something before calls16:59
hatchthanks16:59
hatchbcsaller: do you have some time today to give me a runthrough of how the d3 and yui events are set up?17:29
bcsallerhatch: yeah, wanna say in 10 minutes in chat?17:30
hatchsounds good to me17:30
hatchI can't even get the popup to display by simulating the click right on the service because it's being prevented somewhere so a guide would REALLy help :D17:30
=== matsubara is now known as matsubara-lunch
bcsallerhatch: sounds like you have a call with gary now17:41
hatchyup sorry :)17:42
MakyoI'm at 1.5kloc diff and only a third done.  This branch is getting out of hand.18:06
hatchlol18:06
=== deryck[lunch] is now known as deryck
hatchbcsaller: ok all done, meet in guichat?18:07
bcsallerhatch: heading there now18:08
rogpeppebac: ping18:18
bachi rogpeppe18:19
rogpeppebac: just looking at the GetEndpoints proposal18:19
bacme too18:19
=== matsubara-lunch is now known as matsubara
rogpeppebac: i'm just wondering why it's not just ServiceCharmInfo18:19
rogpeppebac: returning the same thing that CharmInfo does for each service18:20
* bac looks at CharmInfo18:20
rogpeppebac: essentially it looks like you're reconstructing almost all of the information within the charm metadata18:20
bacrogpeppe: it is a subset and we want the ability to get for all services at once, rather than having to make multiple calls18:22
rogpeppebac: in fact... i'm wondering if something that simply returned the charm url for each requested service might be better.18:22
rogpeppebac: then you can call CharmInfo for each unique url found18:22
bacrogpeppe: also, i read my task to be to implement the same functionality hazmat had made available in pyjuju18:22
rogpeppebac: i'm concerned that there's considerable overlapping of functionality here without much gain that i can see18:23
hazmatthis is the get_service method?18:24
bachazmat: get_endpoints18:25
rogpeppebac: if we had a ServiceInfo call that returned a []struct{Name string; CharmURL string; other possible service info}, then i think that would be useful and then CharmInfo remains the definitive place to find endpoint info18:25
rogpeppehazmat: perhaps you have a different perspective on why get_endpoints is useful though?18:27
benjigary_poster: is my branch going to have massive conflicts with your in-memory environment branch?18:27
hazmatrogpeppe, it was an optimization, to prevent the gui having to fetch every charm's info separately, instead just getting interface prov/requires by svc18:28
hazmatin a single call18:28
hazmatotherwise you end up with the gui having to do N + N round trips (get service info, get charm info)18:28
rogpeppehazmat: if we have many services sharing the same charm, it might be a false optimisation :-)18:28
rogpeppehazmat: i don't think so. if we allowed ServiceInfo to return many services, then i think only 2 round trips are required.18:29
gary_posterbenji don't know but mine landed18:29
hazmatrogpeppe, that's not that common in general re many svcs using the same charm. possible though18:29
rogpeppehazmat: there's no problem with launching N API calls concurrently18:29
benjigary_poster: oh, cool; in that case I've already merged it and didn't feel much pain  :)18:30
gary_postergreat18:30
rogpeppehazmat: although i suppose the js client interface might not have allowed for that possibility18:30
hazmatrogpeppe, its not a question of feasibility but of latency till the info can be processed.18:30
hazmatrogpeppe, it does18:30
hazmatall commands are async to the gui18:30
hazmatbut i don't think there is a notion of launch N and wait till N has completed .. ie group deferred/promise18:31
rogpeppehazmat: it wouldn't be hard to do18:31
rogpeppehazmat: i'm not sure that two round trips is too bad, is it?18:31
hazmatrogpeppe, you'll have to be a bit more explicit18:32
hazmatrogpeppe, you saying a ServiceInfos method returning list of service infos and a CharmInfos method returning list of charm infos for a given set of charm urls?18:32
rogpeppehazmat: yes to the former, no to the latter18:33
hazmatthis info feeds into a gui endpoint solver which determines what the valid relations are for the env to allow for drag/drop relations with appropriate ui (disable invalid targest, etc)18:33
rogpeppehazmat: the former because it's good to be able to ask for all services. the latter because we don't want to enumerate all charms, and sending N CharmInfo calls at once should not be a problem.18:34
hazmatrogpeppe, why the distinction?18:35
hazmatie what's wrong with CharmInfos([list-of-charm-urls])18:35
rogpeppehazmat: why bother?18:35
hazmatbut thats okay with ServiceInfos  returning a list?18:35
rogpeppehazmat: we need some way of finding out all the current services18:36
rogpeppehazmat: but i don't think we need a way to find out all charms in the State.18:36
hazmatrogpeppe, it was parameterized.. not all in the state.. all in use by current services18:36
hazmatbut paramterized so the gui can just fetch those it doesn't hvae info for18:37
hazmatthe notion also grows more murky as you consider things like upgrades18:37
hazmatyou need the service watch to inform on charm changes18:37
rogpeppehazmat: yes, it will (and actually does currently)18:37
hazmatcool18:37
rogpeppehazmat: that's why i see CharmInfo as more important than GetEndpoints18:38
rogpeppehazmat: it seems right that the GUI (as well as the state) keeps a notion of what charms it currently has information about18:38
rogpeppehazmat: and invokes CharmInfo for any it doesn't18:38
hazmatthat's seems okay.. bac the client side implementation can basically keep the same interface and internally fetch for what it doesn't have, invoking callback when complete.18:39
rogpeppehazmat: in fact, that's another reason why GetEndpoints isn't that useful - the AllWatcher will tell us about all current services18:40
hazmatthat's not its purpose..18:40
rogpeppehazmat: isn't that how the GUI finds out about everything to start with?18:41
hazmatits purpose is to determine the endpoints when the allwatcher fires and the service set changes18:41
hazmatrogpeppe, yes the gui uses the delta stream to populate. i was referencing the method being discussed.. get_endpoints18:41
bacrogpeppe, hazmat: so, in juju-core GetEndpoints is thrown away.  do we then need new APIs to provide the required information or do those exist already?18:42
rogpeppehazmat: yes, so the service set changes - we see the new charm urls and fetch information for them, which gives us the endpoints associated with the services, no?18:42
rogpeppebac: i *think* you already have all you need18:42
hazmatrogpeppe, yes, that's fine the gui client side go implementation can implement this ontop of the primitives18:42
hazmatnamely CharmInfo(charm_url)18:42
rogpeppehazmat: yup18:43
hazmatbac, so effectively on get_endpoints in the go env impl client side.. you'll call CharmInfo(charm_url) for any services known that don't have charm info fetched, and then flatten that metadata back into provides:[interfaces], requires:[interfaces]18:44
hazmatand then invoke the callback for the result, that should satisfy the interface for the valid endpoint solver.18:44
rogpeppebac: sorry to push back on this (and your implementation was fine!) but i do think that GetEndpoints isn't necessary, and i'd like to keep overall the surface area small if possible.18:44
bachazmat: what is the equivalent of get_endpoints() [no services specified]?  where will i get the list of services we're interested in?18:45
hazmatbac, if none are spec'd its whatever are known to the gui18:45
bacrogpeppe: makes sense.  wish we'd talked before the work was done18:45
bachazmat: yeah, ok18:46
hazmatbac, ic the env impl doesn't have a client db handle to determine that? is that the concern?18:46
bachazmat: don't know yet.  not that familiar with it and will have to look18:46
rogpeppebac: yes, sorry. perhaps we should have a meeting about upcoming proposed API additions, so we can find issues like this earlier18:47
hazmatbac you can walk up the parent tree of event targets... although explicit component lookup would be nicer.18:47
rogpeppebac: i'm really sorry; i know how frustrating it is!18:48
gary_posterbac, I guess this is where you write the JS version and then we steal it for the in-browser-memory Python version too.  18:48
* rogpeppe has got to weekend time18:48
rogpeppeg'night all18:48
bacbye rogpeppe18:48
frankbanhave a great weekend all18:58
hatchMakyo: you mentioned yesterday that you implemented the two finger touch - mind pointing me to where that's done?19:01
hatchI'm slowly making progress on this :)19:02
Makyohatch, D3 implements that.  Just a sec.19:02
hatchoh alright19:03
Makyohttps://github.com/mbostock/d3/blob/master/src/behavior/drag.js 19:03
hatchthanks19:07
hatchOOOoo19:13
* hatch takes one step closer to a solution19:13
hatchok I found the problem19:21
hatchunfortunately a sollution won't be ideal19:21
hatchok it looks like chrome android doesn't convert the touchstart to a click like firefox does - AND touchstart doesn't bubble on svg elements either19:27
hatchso it's kind of like a double edged sword19:27
benjiI swear, firefox is a piece of crap19:27
hatchfirefox is doing it properly ;)19:28
hatchTHIS time19:28
hatchlol19:28
benjiI was speaking apropos of my recent experiences.19:29
hatchahh - time for "works best in ..." images again19:30
hatchhaha19:30
hatchBoo Yeah!19:30
hatchgot er fixed...it's ugly as sin though so I'll have to figure a better way haha19:30
hatchbcsaller: is there a way I can go from the svg .service element and get the object instance associated with it?19:58
hatchessentially I need to manually build the 'box' param in serviceClick19:58
bcsallerhatch: chat?19:59
hatchsure19:59
* bac -> early dog walk. bbiab.20:03
hatchok going to take lunch20:23
hatchbak21:11
hatchsooo anyone have any big plans for the weekend?21:20
gary_posterstop being sick, & actually sleep through the night21:28
hatchpfft a full nights sleep is WAY overrated21:29
hatchso close to getting this to work21:43
hatchMOHOHOHAHAHAHAHA21:49
* hatch yells at chome android "AND STAY DOWN!"21:50
hatchbcsaller: you kickin around still?21:56
hatchjcsackett: is this branch ready for review?22:17
rick_h_droidhatch how does 0.0.0.0 fail on your machine? 23:07
hatchlocalhost points to the 'localhost' that I need not to 0.0.0.023:08
rick_h_droidright so local host reeves to 127.0.0.1 right? 23:08
hatchnope, totally different internal ip23:09
rick_h_droidand 0.0.0.0 will bind to all network addresses and work on 127.0.0.1 23:09
rick_h_droidhmm and 0.0.0.0 doesn't bind to this address? 23:09
hatchlemme see23:10
hatchnope23:11
hatchactually I'm not even sure what it's binding to23:12
hatchI should look into that23:12
rick_h_droidugh what have you got set up :p23:12
hatchI used to be a contractor - who knows what kind of setup I have screwed up here lol23:12
rick_h_droidgenerally you use the 0s trick to bond both local and external addresses so you can test from remote machines like IE in  vm oe windows machine. 23:13
rick_h_droidso jcsackett 's change was probably done to run tests from another machine. but it shouldn't break local host. 23:14
hatchahh I gotcha - yeah see I have localhost pointing to a specific local ip23:14
hatchso if that gets changed to a real ip then it breaks23:15
rick_h_droidhmm so normally changing local host can cause issues. surprised you've got it changed up. 23:16
rick_h_droidbut yea. it's intentional but usually not an issue so not done with any intent to change how things work. 23:17
hatchyeah I figured it was committed by accident that's why I commented23:17
hatchwell and that it'll break the first time i use it haha23:17
hatchbut i should look into what's going on with 0.0.0.023:17
rick_h_droidvery handy trick to  know 23:18
hatchI was once working on three different apache/php based projects at once23:20
hatchjust imagine the headache setting THAT up23:20
hatchugh23:20
rick_h_droidheh used to do php so I understand23:21
hatchthe best part about not doing php - is not having to deal with apache for that stuff23:21
hatchbeing able to create your own server at whatever port you want is a huge plus23:22
hatchso just so I get this right, you're saying that 0.0.0.0 should be pointing to any of the ip's that the machine thinks it has23:24
hatchso 0.0.0.0 should be pointing to 127.0.0.123:25
hatchyeah I definitely broke something somewhere23:27
hatchwell you know what that means....time for a new computer....obviously!23:27

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