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