How to count relations?
fengxia
fxia1 at lenovo.com
Wed Jun 7 15:51:12 UTC 2017
Cory, Alex, good pointers!
I had provider set to GLOBAL and require in UNIT. Maybe that's why. Let
me take a look your example and follow your instructions here to give it
another try.
Thank you guys!
On 06/07/2017 11:44 AM, Cory Johns wrote:
> Alex beat me to it, but here's a marginally more complete example:
> https://gist.github.com/johnsca/a91cb5897d92dfb6741ee1a09d82b39b
>
> The key points are:
>
> * The interface needs to be UNIT scoped (because you care about
> individual units)
> * The joined handler sets a state for each unit that joins
> * The @when('rel.connected') predicate in the charm layer matches all
> units that have had that state set, so the set of conversations in the
> interface layer includes those units, and only those units. This is
> trivially all of the units in my example, but you could also set a
> different state in a -changed handler based on data sent by each
> remote unit, and the conversations would only include the units that
> had that specific state set when you matched that state using @when
>
> Alex: A conversation will always have a scope, so that list
> comprehension isn't necessary.
>
> On Wed, Jun 7, 2017 at 11:38 AM, Alex Kavanagh
> <alex.kavanagh at canonical.com <mailto:alex.kavanagh at canonical.com>> wrote:
>
> Hi
>
> I'm assuming you are using charms.reactive; if not then look into
> relation_ids command.
>
> In your interface, count the number of conversations that have a
> scope set to something other than None. scope shouldn't be None,
> but I've had cases where it has been (it may have been a bug):
>
> So in the provider.py RelationBase derived class, something along
> the lines of:
>
> num = len([c for c in self.conversations() if c.scope])
>
> in a method would be a relatively simple way of doing it.
>
> (There may be better ways of doing this!)
>
> Cheers
> Alex.
>
> On Wed, Jun 7, 2017 at 4:22 PM, fengxia <fxia1 at lenovo.com
> <mailto:fxia1 at lenovo.com>> wrote:
>
> Hi Juju,
>
> I'm building two charms and linking them with one relation,
> one charm ("A") will provide and the other ("B") will require.
>
> The deployment will have one "A" and three "B"s. How do I know
> all three Bs have joined? I'm thinking to use a counter in A's
> relation, then at relation-joined hook by B to add this
> counter. But set_remote() and set_local() didn't work. Not
> sure what's the right way to achieve this?
>
>
> --
> Feng xia
> Engineer
> Lenovo USA
>
> Phone: 5088011794 <tel:5088011794>
> fxia1 at lenovo.com <mailto:fxia1 at lenovo.com>
>
> Lenovo.com
> Twitter | Facebook | Instagram | Blogs | Forums
> 9
>
>
> --
> Juju mailing list
> Juju at lists.ubuntu.com <mailto:Juju at lists.ubuntu.com>
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju
> <https://lists.ubuntu.com/mailman/listinfo/juju>
>
>
>
>
> --
> Alex Kavanagh - Software Engineer
> Cloud Dev Ops - Solutions & Product Engineering - Canonical Ltd
>
> --
> Juju mailing list
> Juju at lists.ubuntu.com <mailto:Juju at lists.ubuntu.com>
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju
> <https://lists.ubuntu.com/mailman/listinfo/juju>
>
>
--
Feng xia
Engineer
Lenovo USA
Phone: 5088011794
fxia1 at lenovo.com
Lenovo.com
Twitter | Facebook | Instagram | Blogs | Forums
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20170607/4a58b3c4/attachment.html>
More information about the Juju
mailing list