/srv/irclogs.ubuntu.com/2014/08/13/#juju-gui.txt

hatchhuwshimi sorry?00:49
hatchno the env destroy calls call the ecs 00:50
huwshimiah00:50
hatchhuwshimi https://github.com/juju/juju-gui/blob/develop/app/store/env/go.js#L107000:51
huwshimihatch: Oh, I see my confusion is from the uncommitted machines just get removed directly00:51
hatchyeah it's almost impossible to keep the execution flow of this app in the head now haha00:52
hatchhuwshimi hey I'm going to take off, need anything before I do?03:35
huwshimihatch: I don't think so. Thanks for those reviews, all that stuff has landed.03:35
huwshimihatch: I'll hook up your deleted state stuff tomorrow03:35
hatchsounds good, I'll do the copy/paste fix in the morning and have it landed for you03:36
huwshimihatch: Have a good night03:36
hatchyou too, cyas03:37
=== uru__ is now known as urulama
rogpeppemornin' all07:45
urulamarogpeppe: morning07:47
rogpeppeurulama: hiya07:47
urulamaso, push(hash), push(hash), remove(hash) results with a CS without (hash) blob?07:48
urulamarogpeppe: i'm a bit lost in what you wrote yesterday. I thought that we used names with blobstore, just that names are hashes. so, what's the difference between "file name" and "file name as a hash"?07:50
rogpeppeurulama: the issue is that the refcount is maintained on the hash, not on the name07:51
rogpeppeurulama: ManagedResource (the juju/blobstore exposed API) deals only in names07:51
rogpeppeurulama: we use the hash for the name, but that doesn't actually help07:52
urulamarogpeppe: ok. stay with me here, i've been in document/talk land for too long in last weeks to see the implementation code before my eyes :) 07:52
urulamarogpeppe: so. if i push (hash-of-wp) and push(hash-of-wp), don't i get two WP-s with different revision numbers?07:53
rogpeppeurulama: WP?07:53
urulamaor what happens with push(H), push(H), remove(H)?07:53
urulamaWP = wordpress07:53
rogpeppeurulama: by "push" you mean "post" ?07:54
rogpeppeurulama: i'm not quite sure what level you're talking about here07:54
urulamarogpeppe: sorry, yes, s/push/put07:55
rogpeppeurulama: in the underlying blobstore, if you do PutForEnvironment(wp); PutForEnvironment(wp); RemoveForEnvironment(wp), then wp will be removed07:55
rogpeppeurulama: those are not the semantics we'd like07:56
rogpeppeurulama: and i'd been stupidly assuming that the above sequence would result in a blob in the blobstore with refcount=107:56
urulamarogpeppe: why do we need to ref-count? what's the use case that if I put something in twice, and remove once, that it should stay there?07:56
rogpeppeurulama: if two charms or bundles or resources are identical, we want them to share the blob and not duplicate the storage space for that07:57
urulamarogpeppe: ah, ok, that explains all of it.07:58
rogpeppeurulama: i actually think that ref counting is questionable given our requirements.07:58
urulamarogpeppe: why?07:59
rogpeppeurulama: my first thought was not to ref count, but just do a simple GC07:59
rogpeppeurulama: because even with ref counting, you'll need a GC07:59
rogpeppeurulama: and if you don't need to ref count, everything becomes simpler (and quicker)07:59
urulamarogpeppe: GC as in ... if there's a blob "hanging" without reference, just remove it, and do this once-in-a-while?08:00
rogpeppeurulama: the reason you need a GC even with ref counting, is that there are always going to be windows where you've incremented a ref count, but not added the catalog entry08:00
rogpeppeurulama: yup08:00
rogpeppes/windows/time windows/08:01
urulamarogpeppe: ok, gc seems fine and simple/controllable solution. however, how does it help with put/put/remove example?08:01
rogpeppeurulama: well, Remove is a no-op on the (well, my) blob store. We just remove the catalog entry (outside of the blob store)08:03
rogpeppeurulama: ref counting is ok too, really (though, as I've said, you probably want a GC too). ref counting assures timely collection of resources.08:04
rogpeppeurulama: but what isn't great is that juju/blobstore doesn't provide us with the capability to refcount hashes directly08:05
urulamafrankban: morning 09:37
frankbanurulama: morning09:37
urulamafrankban: nice PR ... looking09:37
frankbanurulama: thanks!09:38
frankbanrogpeppe: could you please take a look at https://github.com/juju/charmstore/pull/70 ?09:38
rogpeppefrankban: looking09:38
frankbanthanks09:38
urulamafrankban: sent you a summary of a blobstore discussion with rogpeppe this morning in case you are interested. feedback welcome.09:39
frankbanurulama: interesting thanks09:40
frankbanrogpeppe: good idea re just using the entity doc. do we want to send url.Revision as entityCharm.Revision()?09:54
kadams54hatch: you around?14:41
hatchI am14:42
kadams54The args that are included in an ECS command… ['django', 1]14:42
kadams54The first one seems to be the service name, but what's the second? The integer?14:43
hatchkadams54 they map to the respective env call14:44
jcsacketthatch: bug 1349565--did you spot that on ec2, or local?14:44
mupBug #1349565: visiting a /inspector url in a real env causes the charmbrowser to be blank <juju-gui:Triaged> <https://launchpad.net/bugs/1349565>14:44
hatchjcsackett ec2 although I don't think it would matter14:44
kadams54hatch: Ah, so in this case (add unit), it would be (service, numUnits, toMachine, callback, options)14:45
hatchoptions is an ecs argument, it gets stripped off before saving into the changeset14:46
hatchhttps://github.com/juju/juju-gui/blob/develop/app/store/env/go.js#L123714:46
jcsacketthatch: i was looking through the code to see about the refactor we talked about yesterday and realized i should probably try to actually reproduce, and it appears resolved on local. i'm trying ec2 now.14:50
hatchjujugui call in 714:53
hatchjcsackett interesting....I don't recall anyone doing any work on it, so you could visit the url like /inspector/mysql/charm for example?14:54
jcsacketthatch: yeah, going straight to /inspector/juju-gui or /inspector/juju-gui/charm worked fine.14:54
hatchmm interesting, when you get the ec2 version up, if it works i'd like to give it a try just to be sure it wasn't one computer vs another or something14:56
hatchI don't recall anything landing that would fix the problem14:56
hatchjujugui call in 214:58
kadams54"It's taking too long to connect you to this video call. Try again in a few minutes."15:00
hatchurulama kadams54 call15:00
kadams54hatch: trying ^^^15:01
kadams54Attempt #2 also seems to be stalled.15:01
jcsacketthatch: boo. ec2 does indeed fail.15:09
hatchjcsackett phew*15:10
hatch:)15:10
jcsacketthatch: phew? why phew.15:10
jcsackettthat's *bad*.15:10
jcsackett:p15:10
jcsackettit means i have to go fix it now.15:10
hatchlol I suppose, but also good because if it was fixed....by nothing....it might have been a spurious error15:10
hatchjcsackett so this might be part of the real fix stuff to just render the inspector and have it wait for data15:11
jcsacketthatch: yeah, i think that's the case, but there are, as always, edge cases. :p15:11
hatchluca so this added services thing would only be visible when mv is visible?15:30
lucahatch: ah no, I should of said in the email...15:32
hatchyes....yes you should have :P15:32
lucahatch: the added services sidebar is the default sidebar for the canvas15:32
lucahatch: you will be able to click a button (not shown in the prototype) that shows the charm browser15:32
hatchhttp://giphy.com/gifs/what-despicable-me-minion-4JseZwbYRmq2Y15:32
lucahatch: rofl15:33
hatchlol15:33
hatchok lets gloss over that little bit for a second.....15:34
hatchwhat purpose does this serve vs the canvas? I kind of feel like the only thing the canvas does now is show general relations15:35
hatchif both are visible at the same time....it's kind of like a duplicate of information 15:35
hatchI can reply to this in the email, just figured we could chat about it first :)15:35
lucahatch: well, in the first iteration this allows you to a) show/hide a service from view and b) highlight a service and it’s related services AND which services it can connect to.15:37
hatchahh so it's kind of like a filtererer15:37
lucahatch: when viewing MV, this will allow you to filter your list of machines. If you don’t want to see machines with Apache on it then you can turn that service off and it will hide the machines it is on, if it is the only service on that machine.15:38
lucahatch: you’ll be able to switch them all off for instance and then switch wordpress on and only see wordpress machines15:38
lucahatch: and in future iterations networks will also be listed in the added services bar, this means that user could be able to hide networks and the services inside them all at once.15:39
hatchhmm ok as a filter I could see this being a pretty cool feature15:39
lucahatch: we’ve also spoken about being able to group services and this would act in the same way as networks15:39
lucahatch: yeah15:39
hatchso now as far as it being the default....15:39
lucahatch: it also exposes key information like, how many units a service has and other environment wide services.15:40
hatchI'm thinking that maybe the charmbrowser should be the default but it remember which one you have active....I don't want new people to have to 'find' the charmbrowser15:40
hatchso this way once the user has switched to this view, then it remembers it and stays here15:40
hatchMakyo how goes the review? :)15:41
Makyohatch, I thought jcsackett took it, saw his tag.  I can look now if you want though.15:44
jcsackettMakyo: i took my tag off thinking you would take it.15:44
jcsackett:p15:44
jcsackettreview volunteer collision. :Pp15:44
MakyoI'm on it, then!\15:44
* jcsackett laughs15:44
jcsackettsorry about that.15:44
hatchlol15:45
MakyoDone15:50
hatchthanks15:52
kadams54guihelp: looking for someone with ECS experience to do a pre-impl chat on this "don't autoplace units" work.16:27
hatchsure16:28
hatchstandup?16:28
kadams54Sure16:28
hatchI'm there16:28
kadams54Out for lunch16:39
jrwrenbac: https://github.com/CanonicalLtd/charmstore-charm/pull/2/files#r1611512216:42
* bac looks16:42
bacjrwren: do you have that charm currently running?16:45
baci mean, do you currently have it deployed somewhere?16:45
jrwrenbac: No, I just removed it.16:51
jrwrenbac: would you like me to deploy it somewhere?16:51
bacjrwren: next time you have it running do a 'juju get charmstore'.  i think you'll see the descriptions for the items in config.yaml are not rendered very well.  but, i may be wrong.  have you tried that?  is that why you didn't put in line-breaks?16:55
jrwrenbac: I have tried it, and that is why I didn't put in line breaks.16:57
jrwrenbac: if I put in line breaks I get very terrible rendering.16:57
bacjrwren: ok, cool.16:57
bacjrwren: so, like this 'juju get' will dtrt?16:58
jrwrenbac: I'm tempted to file a bug about it. I feel like the yaml should be able to be more readable16:58
bac+116:58
jrwrenbac: yes, juju get charmstore inserts line wraps.16:59
jrwrenbac: I wanted to use yaml | line wrap feature, but if I do that, then it ruins the juju get line wrap inserting16:59
jrwrenbac: Output of juju get charmstore: http://pastebin.ubuntu.com/8037699/17:00
bacnice17:00
bacyeah, i wish they would dedent the description before doing their own wrapping17:01
jrwrenbac: *gasp*. I now think it was my fault. I should have used > instead of |17:02
jrwrenusing | is ugly: http://pastebin.ubuntu.com/8037729/17:03
jrwrenusing > is a little less ugly, but it is not good: http://pastebin.ubuntu.com/8037742/17:05
jrwrenbac: Do you think I should file a bug?17:05
bacjrwren: why the single-quotes?17:06
bacyeah, i'd file a bug.  the charm author should not have to go through such hoops to get nice output.17:07
kadams54hatch: back from my run when you're ready to chat17:15
hatchcool, almost done writing a psudo spec17:16
jrwrenbac: I don't know from where those single quotes come. They are not written in the yaml.17:20
jrwrenbac: filing a bug.17:20
jrwrenbac: I updated that PR with your suggestions. Thank you for them.17:22
bacnp17:22
bacthanks for the branch!17:22
hatchkadams54 https://gist.github.com/hatched/101a2b25a2558fd5f6c217:25
kadams54Is there a real need for a public method to return a list of unplaced units in the ECS?17:26
kadams54Right now I just do db.filterByMachine(null)17:27
kadams54Would there ever be a situation where the list of unplaced units in the ECS would differ from the DB?17:27
hatchhmm17:27
hatchnot if everything is working properly17:28
hatch:)17:28
hatchgood point though17:28
hatchkadams54 so this looks like 4 branches too so you can split it up into 4 cards and tackle the smaller problems 17:34
kadams54Will do17:34
rogpeppeg'night all17:49
jcsacketthatch: what do you think of having the db have a loaded attribute that gets set once data syncs the first time?18:22
hatchjcsackett the issue is that we can't know when that is18:22
hatchit's only 'deltas' 18:22
hatchthere is nothing saying that 'this' is a special delta18:22
hatchI mean - technically the first big delta is that one - but there is no guarantee 18:23
jcsacketthatch: sure, but this is a bit better than the inspector waiting on an add signal or something.18:23
* hatch puts thinking cap on18:23
hatchgimme a couple mins to think this one through 18:23
jcsacketthatch: b/c that way, the inspector fires up, sees no model, waits on data, but if the charm doesn't exist, data is never coming and we'll need a wait timer.18:23
jcsacketthatch: whereas if the db says "units are ready" after the signal, inspector can say "are units ready? yes, okay this just doesn't exist."18:24
jcsackettand if units aren't ready, render and set once() for loading the data once it's ready.18:24
jcsacketts/units/services or s/units/charms in everything i just said.18:24
hatch:)18:25
hatchjcsackett ok for the best user experience we need to make it feel fast even if it's not, and not showing the inspector then rendering it when the data comes in will make it feel laggy18:28
hatchso....18:28
hatchwe should render the inspector into a 'waiting for data' state18:28
hatchonce it's data shows up then populate the proper elements18:28
jcsacketthatch: ok, but sometimes data will never come.18:28
hatchif the data doesn't show up in some pre-determined time then we will close it and throw a notification18:28
hatchat least we are saying "you asked for an inspector, here it is, oh, your data doesn't exist you fool....closing"18:29
hatch:)18:29
jcsacketthatch: but that requries a wait timer, which is generally sub-par.18:29
hatchprobably don't call them a fool in the notificaton though18:29
hatch:)18:29
jcsacketthatch: i'm not sold that doing so is superior to the 'loaded' attribute idea.18:29
hatchthe loaded attribute is a non-starter because the charm data they are requesting may not come in the initial load18:30
hatchyou could add a listener on the db waiting for any change events, then parsing them for the data the inspector needs18:30
hatchthen it's not a poll 18:30
jcsackettthat doesn't solve the the case of /inspector/this-charm-never-existed18:30
jcsackettthat way we'll still need a wait timer; and given the fun we've had with those i'm -1 on it.18:31
hatchsure, we put a setTImeout on that listener, if it's not called within.....5s? 10s? then we close the inspector and throw a notification18:31
jcsacketthatch: realistically in the first delta how often is the data not going to arrive?18:31
hatchno idea, but it's a bug that'll be impossible to track down because joe-user will say "visited linked url and it just loaded a blank block"18:32
hatchI much prefer the more resiliant approach18:33
jcsacketthatch: it won't load a blank block; if you go to /inspector/charm-does-not-exist and the insepctor sees there should be data, we throw up a notification and close the inspector.18:33
jcsacketthatch: and i find bugs around timers to be equally frustrating for joe user and us to sort.18:33
jcsackett(the throw up inspector is what we do now in the case where after 30s the data still hasn't loaded)18:34
jcsacketts/throw up inspector/throw up notification/18:34
hatchright, so your approach is identical to mine except mine isn't dependent on the data showing up all at once 18:34
hatchif juju-core ever decides to change how that initial delta is sent out we're in trouble18:35
hatchwe don't treat any deltas as 'special' now18:35
hatchso I'd prefer to not start18:35
jcsacketti wouldn't say this is treating one as special. it's a relative indication that data has come through.18:36
hatchdata has come through, but not what data18:36
jcsackettand it's not on the delta; it's on db.services:add happening.18:36
jcsackettor db.services:charms18:36
jcsackettdammit, i cannot type today.18:36
hatchhaha 18:36
jcsackettanyway, i don't want to (and have no idea how to) listen for *a* delta coming through.18:36
jcsacketti'm interested in watching for when services gets a service loaded. or charms gets a charm loaded.18:37
hatchso you want to create an attribute in db.charms which means 'initial load completed' ?18:37
jcsackettand setting "ready" flags on those.18:37
hatchI'm just not sure we can rely on the first call to db.charms.add to trigger that it's done it's initial load18:38
jcsacketthatch: call?18:38
hatchsure standup18:38
jcsackettcool18:38
=== perrito6` is now known as perrito666
=== tvansteenburgh1 is now known as tvansteenburgh
hatchquiet in here :)21:03
jcsacketthatch: i think this may need to wait until after MV 1.021:13
hatchjcsackett yeah? 21:13
hatchtoo indepth?21:13
jcsackettccccccbljtrvggekgghgkkfkvbcrbhflnvuilfgvhcnko check the model to determine whether we're going 21:13
jcsackettdammit.21:13
jcsackettso, we need to get rid of the ghost inspector first.21:13
jcsackettas in, release that.21:13
jcsackettb/c everything we discussed should be, i think, the responsibility of the service inspector.21:14
jcsackettbut we need to get the service model before we create the inspector now to check if we're doing a regular or a ghost.21:14
jcsacketthatch: unless you think it's reasonable for the browser.js dispatch code to partially render the inspector, etc etc etc.21:15
hatchahhh so all of the old code is messing it up21:15
jcsacketta bit.21:15
hatchwell I think that the inspector should handle its own rendering 21:15
hatchso that you just pass it data and it does with it what it should21:16
jcsacketthatch: yeah.21:16
hatchjcsackett what if you put the retries in the inspector to be like 10s? 21:16
hatchas a temp fix21:16
jcsacketti'll give that a try and throw it at ec2.21:17
jcsackettoh, wait, no. it won't work.21:17
jcsackettb/c the retry is for the service, and it's not finding the charm that's the issue (once we're inside the inspector code)21:17
jcsacketti could update the check to be for model *and* charm, and enter retry if we don't have both.21:18
jcsackettthat might be the right shim for now, actually.21:18
jcsackettand we'll throw in a card that's blocked on MV 1.0 for doing this the right way.21:18
jcsackett...or just leave this one if that doesn't work, i suppose.21:18
jcsackett(there is a reasonable chance it will not work :p)21:18
jcsacketthatch: you down with more temporary shimming with a card for 1.0 proper fix as we discussed?21:19
hatchhaha yeah I was just going to suggest doing the temp fix with looping for both things to be ready21:19
hatchI'd prefer a temp fix than it brick the app if someone hits the seemingly valid url21:19
jcsacketthatch: yeah.21:19
hatchcool with doing the temp fix?21:19
jcsacketti am.21:19
jcsackettdisappointed, but cool with it.21:19
jcsackettesp since we now have a fully fleshed out idea for the *right* way once MV is released.21:20
hatchyeah - I think we have bigger fish to fry to try and get mv 1.0 out21:20
hatchright21:20
jcsackettyeah, this got huge and hairy with a quickness.21:20
jcsackettok, i'll do the temp. it'll take me awhile to test it, but i think that should largely work.21:21
hatchMakyo I think I found a case where your impl doesn't cover, commented in the pr22:56
Makyokk22:58
hatchgoooood morning huwshimi 22:59
huwshimiMorning22:59
Makyohatch, good catch (except we can't delete uncommitted units yet).  I'll poke at it tomorrow.23:03
hatchMakyo right, but that will be coming in mv 1.0 though23:04
MakyoThat's why I'll poke at it tomorrow.23:04
MakyoGotta get James' car from the shop now.23:04
hatchwhat? NO DO IT NOW!!!!23:04
hatch:P23:04
hatchuh oh, broke car?23:04
MakyoA gasket in his turbo busted and leaked oil into it, so he's been burning oil.23:05
hatchouch, expensive fix23:05
hatchhuwshimi the deleted flag branch has landed, do....your.....worst!23:05
huwshimihatch: A brilliant, thanks for that!23:06
huwshimihatch: How do you mock an object so that you can use .get() for the properties?23:08
huwshimi(in this case 'env')23:09
hatchok sec23:09
huwshimihatch: Also has your daylight savings time changed?23:10
hatchhuwshimi https://gist.github.com/hatched/ee86418459e37e60ca2423:11
hatchhuwshimi no we don't do DST23:11
huwshimihatch: Oh, I was sure I sure I used to start before your EOD23:11
hatchit's 5:12pm here now23:12
hatchyou usually start at 4:3023:12
hatchI just assumed you were starting later23:12
hatch:)23:12
hatchhuwshimi my example there assumes you want to return different values depending on the key passed in23:14
huwshimiMaybe I haven't noticed since DST changed in April :)23:14
hatchyou can skip all that switch bs if that's not the case23:14
huwshimihatch: No that's what I want to do,23:14
hatchgreat23:14
hatchheh yeah we don't do DST, in the summer, it's light no matter what, in winter it's dark23:14
hatchswitching one hour either way would make no difference 23:15

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