Hi Tilman

That's very useful.  Based on your work I'm definitely going to explore the
interactions of all of these scopes!

Cheers
Alex.

On Fri, Jan 27, 2017 at 12:16 PM, Tilman Baumann <
[email protected]> wrote:

> OMG, I went way deep down the rabbit hole.
>
> I had to find charms.reactive.join() to find what the difference of the
> scopes really means.
>
> This kept me busy and questioning my sanity for two days:
> $ git diff
> diff --git a/peers.py b/peers.py
> index 976c0ad..93cda29 100644
> --- a/peers.py
> +++ b/peers.py
> @@ -12,7 +12,7 @@ from charms.reactive import scopes
>
>
>  class PeerDiscovery(RelationBase):
> -    scope = scopes.UNIT
> +    scope = scopes.SERVICE
>
>      class states(StateList):
>          connected = State('{relation_name}.connected')
>
> Sometimes software engineering feels just like a farce. :)
>
>
> Cheers guys, I hope you where entertained.
>  Tilman
>
> On 25.01.2017 16:54, Tilman Baumann wrote:
> > On 25.01.2017 15:49, Tilman Baumann wrote:
> >> On 25.01.2017 14:24, Tilman Baumann wrote:
> >>> On 25.01.2017 13:16, Stuart Bishop wrote:
> >>>> On 25 January 2017 at 18:43, Tilman Baumann
> >>>
> >>>> I don't know why your peer relation (with global scope) starts
> >>>> misbehaving after you add the container scoped juju-info relation to
> >>>> turn your charm into a subordinate. It might be helpful to inspect the
> >>>> peer relation with the hook environment tools to try to narrow down if
> >>>> the problem is with Juju, charms.reactive, or something else. Using
> >>>> debug-hooks, or 'juju run --unit foo/0 "relation-ids ssh-peers"' and
> >>>> 'juju run --unit foo/0 "relation-list -r ssh-peers:64"' if you haven't
> >>>> done this before.
> >>>
> >>> Thanks. That was the breakthrough hint.
> >>> [...]
> >>> It is either reactive or my charm code.
> >>
> >> Reactive.
> >>
> >> Shortened version of my debug interface code:
> >>
> >> @hook('{peers:peer-discovery}-relation-{joined,changed}')
> >> def changed(self):
> >>     for conv in self.conversations():
> >>         log("JujuInfoClient Conversation.serialize():
> >> {}".format(conv.__class__.serialize(conv)))
> >>
> >> I get:
> >> Conversation.serialize(): {'scope': 'iptables-peer-ssh/102',
> >> 'namespace': 'ssh-peers:105', 'units': ['iptables-peer-ssh/102']}
> >>
> >> I have to go deeper down the rabbit hole. But somehow the Conversations
> >> get initialised with bullshit.
> >>
> >> This would be a example of a correctly initialised conversion.
> >> {'scope': 'global', 'units': ['dokuwiki/25'], 'namespace':
> 'host-system'}
> >>
> >> I will go bare-metal with charmhelpers and see what I get there...
> >>
> >
> > charmhelpers.core.hookenv tools seem to perform as expected
> >
> > units = related_units()
> >   for unit in units:
> >     relation_get('private-address', unit)
> >
> > I will bodge up a workaround with that now in order to be able to
> > deploy. But surely there is something wrong in the way RelationBase gets
> > initialised...
> >
>
> --
> Juju mailing list
> [email protected]
> Modify settings or unsubscribe at: https://lists.ubuntu.com/
> mailman/listinfo/juju
>



-- 
Alex Kavanagh - Software Engineer
Cloud Dev Ops - Solutions & Product Engineering - Canonical Ltd
-- 
Juju mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju

Reply via email to