tacker.common.coordination module¶
Coordination and locking utilities.
- class tacker.common.coordination.Coordinator(agent_id=None, prefix='')¶
- Bases: - object- Tooz coordination wrapper. - Coordination member id is created from concatenated prefix and agent_id parameters. - Parameters:
- agent_id (str) – Agent identifier 
- prefix (str) – Used to provide member identifier with a meaningful prefix. 
 
 - get_lock(name)¶
- Return a Tooz backend lock. - Parameters:
- name (str) – The lock name that is used to identify it across all nodes. 
 
 - start()¶
 - stop()¶
- Disconnect from coordination backend and stop heartbeat. 
 
- tacker.common.coordination.synchronized(lock_name, blocking=True, coordinator=<tacker.common.coordination.Coordinator object>)¶
- Synchronization decorator. - Parameters:
- lock_name (str) – Lock name. 
- blocking – If True, blocks until the lock is acquired. If False, raises exception when not acquired. Otherwise, the value is used as a timeout value and if lock is not acquired after this number of seconds exception is raised. 
- coordinator – Coordinator class to use when creating lock. Defaults to the global coordinator. 
 
- Raises:
- tooz.coordination.LockAcquireFailed – if lock is not acquired 
 - Decorating a method like so: - @synchronized('mylock') def foo(self, *args): ... - ensures that only one process will execute the foo method at a time. - Different methods can share the same lock: - @synchronized('mylock') def foo(self, *args): ... @synchronized('mylock') def bar(self, *args): ... - This way only one of either foo or bar can be executing at a time. - Lock name can be formatted using Python format string syntax: - @synchronized('{f_name}-{vnf.id}') def foo(self, vnf): ... - Available field names are: decorated function parameters and f_name as a decorated function name. 
