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.kavan...@canonical.com <mailto:alex.kavan...@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 <fx...@lenovo.com
    <mailto:fx...@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>
        fx...@lenovo.com <mailto:fx...@lenovo.com>

        Lenovo.com
        Twitter | Facebook | Instagram | Blogs | Forums
        9


-- Juju mailing list
        Juju@lists.ubuntu.com <mailto:Juju@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@lists.ubuntu.com <mailto:Juju@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
fx...@lenovo.com
        
Lenovo.com
Twitter | Facebook | Instagram | Blogs | Forums

-- 
Juju mailing list
Juju@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju

Reply via email to