Well, given it is "unit-get" shouldn't it be more "relation-get private-address" ? The issue is *that* is "give me the private-address for the other side of this relation". Which is not quite what you want. And while I think it is true that many things won't be able to handle binding to more than one ip address (its either everything with 0.0.0.0 or one thing), I think we should at least make it *possible* for well formed services to behave the way we would like.
John =:-> On Wed, Jun 18, 2014 at 6:12 AM, Andrew Wilkins < [email protected]> wrote: > On Tue, Jun 17, 2014 at 11:35 PM, Kapil Thangavelu < > [email protected]> wrote: > >> >> >> >> On Tue, Jun 17, 2014 at 9:29 AM, John Meinel <[email protected]> >> wrote: >> >>> ... >>> >>> >>>> In a nutshell: >>>>> - There will be a new hook, relation-address-changed, and a new tool >>>>> called address-get. >>>>> >>>> >>>> This seems less than ideal, we already have standards ways of getting >>>> this data and being notified of its change. introducing non-orthogonal ways >>>> of doing the same lacks value afaics or at least any rationale in the >>>> document. >>>> >>> >>> So maybe the spec isn't very clear, but the idea is that the new hook is >>> called on the unit when *its* private address might have changed, to give >>> it a chance to respond. After which, "relation-changed" is called on all >>> the associated units to let them know that the address they need to connect >>> to has changed. >>> >>> It would be possible to just roll relation-address-changed into config >>> changed. >>> >> >> or another unit level change hook (unit-address-changed), again the >> concerns are that we're changing the semantics of relation hooks to >> something fundamentally different for this one case (every other relation >> hook is called for a remote unit) and that we're doing potentially >> redundant event expansion and hook queuing as opposed to >> coalescing/executing the address set change directly at the unit scope >> level. >> >>> >>> The reason it is called for each associated unit is because the network >>> model means we can actually have different addresses (be connected on a >>> different network) for different things related to me. >>> >>> e.g. I have a postgres charm related to application on network A, but >>> related to my-statistics-aggregator on network B. The address it needs to >>> give to "application" should be different than the address given to >>> "my-statistics-aggregator". And, I believe, the config in pg_hba.conf would >>> actually be different. >>> >>> >> thanks, that scenario would be useful to have in the spec doc. As long as >> we're talking about unimplemented features guiding current bug fixes, >> realistically there's quite a lot of software that only knows how to listen >> on one address, so for network scoped relations to be more than advisory >> would also need juju to perform some form of nftables/iptables mgmt. Its >> feels a bit slippery that we'd be exposing the user to new concepts and >> features that are half-finished and not backwards-compatible for proxy >> charms as part of a imo critical bug fix. >> > >>> >>>> the two perspectives of addresses for self vs related also seem to be a >>>> bit muddled. a relation hook is called in notification of a remote unit >>>> change, but now we're introducing one that behaves in the opposite manner >>>> of every other, and we're calling it redundantly for every relation instead >>>> of once for the unit? >>>> >>>> >>>>> - The hook will be called when the relation's address has changed, >>>>> and the tool can be called to obtain the address. If the hook is not >>>>> implemented, the private-address setting will be updated. Otherwise it is >>>>> down to you to decide how you want to react to address changs (e.g. for >>>>> proxy charms, probably just don't do anything.) >>>>> >>>> >>>> perhaps there is a misunderstanding of proxies, but things that set >>>> their own address have taken responsibility for it. ie juju only updates >>>> private address if it provided it, else its the charms responsibility. >>>> >>>> fwiw, i think this could use some additional discussion. >>>> >>>> >>> So one of the reasons is that it takes some double handling of values to >>> know if the existing value was the one that was what we last set it. And >>> there is the possibility that it has changed 2 times, and it was the value >>> we set it to, but that was the address before this one and we just haven't >>> gotten to update it. >>> There was a proposal that we could effectively have 2 fields "this is >>> the private address you are sharing, which might be empty" and "this is the >>> private address we set" which is where we put our data. And we return the >>> second value if the first is still nil. Or we set it twice, and we only set >>> the first one if it matches what was in the second one, etc. >>> All these things are possible, but in the discussions we had it seemed >>> simpler to not have to track extra data for marginal benefit. Things which >>> are proxy charms know that they are, and they found the right address to >>> give in the past, and they simply do the same thing again when told that we >>> want to change their address. >>> >> >> there's lots of other implementation complexity in juju that we don't >> leak, we just try to present a simple interface to it. we'd be breaking >> existing proxy charms if we update the values out from the changed values. >> The simple basis of update being you touched you own it and if you didn't >> it updates, is simple, explicit, and backwards compatible imo. >> >> There's also the question of why the other new hook (relation-created) is >> needed or how it relates to this functionality, or why the existing >> unit-get private-address needs to be supplemented by address-get. >> > > relation-created is not strictly required for this work, it just came up > during discussions as a way for charms to do once-off setup of relation > settings. I probably should have left it out of the doc. > > I suppose "unit-get private-address" could be extended to take a relation > ID. > > >> >> chers, >> >> Kapil >> >> >
-- Juju-dev mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev
