[01:26] thumper oh lol, sorry to blank you - I'm not actually online atm (EOY leave :-D) How's things? [01:51] tlm: can you review this plz https://github.com/juju/juju/pull/11044 [01:52] veebers: I thought it could have just been a bouncer reconnect [01:52] veebers: I'm good, you? [01:52] veebers: we should catch up for a coffee sometime [01:53] thumper can't complain - busy with the boy. Aye I would be keen! [01:55] veebers: he must be getting a lot bigger now [01:56] thumper grows faster than a weed! On a fine day we could go play a round of disc golf if you wanted something more energetic than coffee :-D In the week after xmas I could bring Link too [01:56] hpidcock: sure [01:57] veebers: not sure how energetic I'll feel :) [01:57] babbageclunk: I think I need you again [01:57] :-D [01:58] hpidcock: and here it is https://github.com/juju/juju/pull/11045 [01:59] babbageclunk: you ready for me to look at your test issue? [01:59] just a casual 222 files changed [01:59] mostly imports :-) [02:25] hpidcock, babbageclunk: https://github.com/juju/juju/pull/11046 for 2.7 merge [02:25] can I get you two to cast your eyes over it to make sure I didn't fubar it [02:28] thumper: yep, the files I was concerned about look how they should [02:29] hpidcock: coolio [02:34] wallyworld: I'm halfway and the green lines are starting to merge with the red lines haha I'm going to take a break from this PR for a bit [02:34] sure, np [02:47] thumper: looking [02:49] babbageclunk: so in https://github.com/juju/juju/pull/11013, what test is it that is failing? [02:50] wallyworld: hang on, getting you a link... [02:50] and PR has latest code pushed? [02:50] it's in api/crossmodelrelations [02:50] yup [02:51] wallyworld: https://github.com/juju/juju/pull/11013/files#diff-d93493a140cf12285d568802cca83761R363 [02:52] righto [02:53] fails with: https://paste.ubuntu.com/p/wwgkyScvFY/ [02:53] Instead of coming in as something that I can assign a value to, result comes in as just interface{} [02:54] Presumably it's because of the dance that happens with the commonWatcher inside the client-side watchers (constructing a new result type and passing it around as interface{})? [03:00] not sure yet, will look [03:01] just finishing a fight with go dep. go dep sucks [03:26] it's just dep [03:27] thanks - no rush, still wrestling with the remoterelations worker tests [03:37] thumper: you still handling that forward port? [03:41] hpidcock: yeah, got an expected error [03:41] in babbageclunk's stuff [03:41] babbageclunk: may need your assistance again [03:42] ok [03:48] that was easier than I thought it was going to be [03:48] ... which is good [03:56] thumper: normally it goes the other way [03:57] babbageclunk: true that [04:09] babbageclunk: i'm not sure either at this point how to deference that ptr. Goland knows how to so it clearly can be done [04:16] babbageclunk: actually, this works, but need to figure out how to do the assert [04:16] res := reflect.ValueOf(result).Elem() [04:16] res.Set(reflect.ValueOf(¶ms.RelationUnitsWatchResult{})) [04:16] //c.Assert(res, gc.FitsTypeOf, ¶ms.RelationUnitsWatchResult{}) [04:16] *(res.Interface().(*params.RelationUnitsWatchResult)) = params.RelationUnitsWatchResult{ [04:16] Error: ¶ms.Error{Message: "STOPPED"}, [04:16] } [04:17] you should be able to dereference a interface ptr https://play.golang.org/p/mlyAZHqvWPJ [04:19] yeah, that works need to see if it works with the assert stuff [04:31] hmmm, we still need all the reflect machinery to wrie stuff up. but can add a check to start with and avoid the checker [04:31] _, ok := result.(interface{}).(*params.RelationUnitsWatchResult) [04:31] if !ok { [04:31] c.Fail() [04:31] } [04:31] res := reflect.ValueOf(result).Elem() [04:31] res.Set(reflect.ValueOf(¶ms.RelationUnitsWatchResult{})) [04:31] *(res.Interface().(*params.RelationUnitsWatchResult)) = params.RelationUnitsWatchResult{ [04:31] Error: ¶ms.Error{Message: "STOPPED"}, [04:31] } [04:32] babbageclunk: the above will unblock for now at least [04:38] https://github.com/juju/juju/pull/11047 for someone... [04:38] provides exposing the underlying replicaset status in juju_metrics and juju_engine_report [04:53] thumper: done [04:53] wallyworld: ta [04:53] tlm: you going ok on the pylibjuju bug? [04:54] bug yes [04:54] python venv no [04:54] joy [04:54] hpidcock can probs help [04:54] don't forget to add a trello card [04:54] it will work soon, hpidcock has been. Having an issue installing requirements. Might be a version mismatch [04:54] yep will do now [04:54] ty [04:56] wallyworld: I won't let him drown [04:57] hpidcock: did the pr explain ok how bakery.v2-unstable in places still? [04:59] wallyworld: haha yep makes sense sorry. I must have read it. Went in this ear and out the other [04:59] no worries, sorry about the snark :-) [05:00] I appreciated the snarky comment [05:02] rage quit, problem is because python remove a function from an interface between 3.7 3.8. So much for backwards compatibility [05:03] go 1.0 promise keeps me loving go [05:06] wallyworld: I'm happy with the PR now. Hopefully it lands without 🔥 [05:07] hpidcock: awesome, and many thanks, those sorts of prs are horrible to review (and even worse to write, took me ages to get stuff sorted). [05:07] they are fine, one day I'll return the favour with a 1000 file PR :P [05:08] huh, only 1000, i eat then for breakfast [05:13] * thumper EODs [05:13] see y'all tomorrow [06:06] wallyworld: can a subordinate unit be a subordinate to multiple parents? [06:06] hmm I dunno if that makes sense [06:06] no, you need to install the charm a second time and alias the app name [06:06] ok [06:07] weird how the "subordinate-to" field is an array [06:07] hmmm, maybe i'm wrong then [06:07] i would have been 99.9% sure i was right [06:17] yeah I'm getting more and more confused as I read the code [06:19] processApplicationRelations in apiserver/facades/client/client/status.go [06:19] makes me think it "could" === tyldis_ is now known as tyldis === niemeyer_ is now known as niemeyer === skay_ is now known as skay === nniehoff_ is now known as nniehoff === petevg_ is now known as petevg === davecore_ is now known as davecore === coreycb_ is now known as coreycb === nottrobin_ is now known as nottrobin === skay is now known as Guest62328 === arif-ali_ is now known as arif-ali [10:11] I find it interesting that on first use of juju, we break --format directives :| === wpk_ is now known as wpk === Guest62328 is now known as skay [14:08] stickupkid, do you know when the next release to pypi might be for libjuju ? [14:09] gnuoy, might be worth pinging rick_h [14:09] stickupkid, ack, thanks [14:19] gnuoy: sorry, it'll be after the break I think. There's some WIP that's going into the next release for some missing items that we're doing on roadmap [14:20] rick_h, sure, np, thanks [14:20] gnuoy: the other half of Juju is doing them so I don't have really solid insight into what % of the way they are but it feels a bit like there's another weekish of work there [16:35] hml: I am looking at the code in runner/debug/server.go:43. Can you tell how it figures out what script to run? [16:36] achilleasa: looking [16:37] achilleasa: I think i know - HO? [16:37] give me 5' [16:38] achilleasa: sure - it’s related to juju debug-hooks [16:49] achilleasa: a hook is not actually run, just does setup to the debug-hooks tmux session to let the user know what hook would have been run. so the user can run it themselves and debug the results, try again etc. [16:50] we do need a way to “hook” into that for process-hook. [16:54] hml: can you join daily? [16:54] achilleasa: omw === gurmble is now known as grumble [22:01] wallyworld: ah, so it seems the problem is that it's an interface{} wrapping another interface{} wrapping the real type, and the checker machinery is only going down one level? [22:02] babbageclunk: yeah, i think that's the case [22:02] awesome - thanks for picking that apart! Think I've got all of the other tests fixed, just incorporating that now. [22:03] awesome [22:29] wallyworld: hmm, I don't think that does it - that code always succeeds, even if the result type is wrong [22:31] ie, I've changed the newResult func to use the wrong type, and I can't get the test to fail [22:32] hmmm, well that sucks [22:33] babbageclunk: this line is meant to cater f rot that [22:33] _, ok := result.(interface{}).(*params.RelationUnitsWatchResult) [22:33] ok should be false if the type is wrong surely? [23:09] doesn't seem to fail... [23:09] wallyworld: oh yeah - that fails, but it also fails if the type is right. [23:18] small forward port from 2.7 - develop https://github.com/juju/juju/pull/11048 [23:22] hpidcock: did you have any conflicts? [23:22] 0 conflicto [23:22] sweet [23:23] I'm going to get so many when I merge the remaining cmr/appdata stuff [23:23] really looking forward to it [23:23] pffft, you'll only have 5000 [23:26] hpidcock: approved anyway [23:27] thanks :) [23:34] babbageclunk: i ran the unit test with the code i pasted and it worked as expected when the type was correct [23:34] i didn't test when the type was wrong, but i can't see how it wouldn't fail [23:35] :( [23:35] might try in the debugger [23:37] so it passes for you? but dosn't fail? [23:39] no, that check always fails [23:39] if I take it out, the res.Set always succeeds [23:39] whaaaat [23:40] ikr [23:40] maybe get someone else to pull the code and try it [23:40] Looking at the watcher code I can see that I'm missing a case where the watch result has an error - I'm going to handle that and then tweak the test some more [23:40] wallyworld: you don't believe me! It's true though [23:41] I'm happy to help, let me know [23:44] thanks hpidcock - just trying something else, will v likely hit you up after that [23:52] ugh, trying to read the json unmarshalling code to see how it manages to store info into the result in this circumstance [23:54] yeah, that's too Lovecraftian for my taste