On Tue, Jun 17, 2014 at 11:35 PM, Kapil Thangavelu <
kapil.thangav...@canonical.com> wrote:

>
>
>
> On Tue, Jun 17, 2014 at 9:29 AM, John Meinel <j...@arbash-meinel.com>
> 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
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to