normal charm to subordinate charm and now peer relation does not work

Alex Kavanagh alex.kavanagh at canonical.com
Fri Jan 27 12:23:30 UTC 2017


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 <
tilman.baumann at canonical.com> 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
> Juju at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/
> mailman/listinfo/juju
>



-- 
Alex Kavanagh - Software Engineer
Cloud Dev Ops - Solutions & Product Engineering - Canonical Ltd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20170127/6ae06015/attachment.html>


More information about the Juju mailing list