# salt.modules.zk_concurrency

## Concurrency controls in zookeeper

depends:

  kazoo

configuration:

  See `salt.modules.zookeeper` for setup instructions.

This module allows you to acquire and release a slot. This is primarily useful for ensureing that no more than N hosts take a specific action at once. This can also be used to coordinate between masters.

salt.modules.zk_concurrency.lock(path, zk_hosts=None, identifier=None, max_concurrency=1, timeout=None, ephemeral_lease=False, force=False, profile=None, scheme=None, username=None, password=None, default_acl=None)

  Get lock (with optional timeout)

  path

    The path in zookeeper where the lock is

  zk_hosts

    zookeeper connect string

  identifier

    Name to identify this minion, if unspecified defaults to the hostname

  max_concurrency

    Maximum number of lock holders

  timeout

    timeout to wait for the lock. A None timeout will block forever

  ephemeral_lease

    Whether the locks in zookeper should be ephemeral

  force

    Forcibly acquire the lock regardless of available slots

  Example:

      salt minion zk_concurrency.lock /lock/path host1:1234,host2:1234

salt.modules.zk_concurrency.lock_holders(path, zk_hosts=None, identifier=None, max_concurrency=1, timeout=None, ephemeral_lease=False, profile=None, scheme=None, username=None, password=None, default_acl=None)

  Return an un-ordered list of lock holders

  path

    The path in zookeeper where the lock is

  zk_hosts

    zookeeper connect string

  identifier

    Name to identify this minion, if unspecified defaults to hostname

  max_concurrency

    Maximum number of lock holders

  timeout

    timeout to wait for the lock. A None timeout will block forever

  ephemeral_lease

    Whether the locks in zookeper should be ephemeral

  Example:

      salt minion zk_concurrency.lock_holders /lock/path host1:1234,host2:1234

salt.modules.zk_concurrency.party_members(path, zk_hosts=None, min_nodes=1, blocking=False, profile=None, scheme=None, username=None, password=None, default_acl=None)

  Get the List of identifiers in a particular party, optionally waiting for the specified minimum number of nodes (min_nodes) to appear

  path

    The path in zookeeper where the lock is

  zk_hosts

    zookeeper connect string

  min_nodes

    The minimum number of nodes expected to be present in the party

  blocking

    The boolean indicating if we need to block until min_nodes are available

  Example:

      salt minion zk_concurrency.party_members /lock/path host1:1234,host2:1234
      salt minion zk_concurrency.party_members /lock/path host1:1234,host2:1234 min_nodes=3 blocking=True

salt.modules.zk_concurrency.unlock(path, zk_hosts=None, identifier=None, max_concurrency=1, ephemeral_lease=False, scheme=None, profile=None, username=None, password=None, default_acl=None)

  Remove lease from semaphore

  path

    The path in zookeeper where the lock is

  zk_hosts

    zookeeper connect string

  identifier

    Name to identify this minion, if unspecified defaults to hostname

  max_concurrency

    Maximum number of lock holders

  timeout

    timeout to wait for the lock. A None timeout will block forever

  ephemeral_lease

    Whether the locks in zookeper should be ephemeral

  Example:

      salt minion zk_concurrency.unlock /lock/path host1:1234,host2:1234