Package ganeti :: Module locking
[hide private]
[frames] | no frames]

Module locking

source code

Module implementing the Ganeti locking code.

Classes [hide private]
  _SingleNotifyPipeConditionWaiter
Helper class for SingleNotifyPipeCondition
  _BaseCondition
Base class containing common code for conditions.
  SingleNotifyPipeCondition
Condition which can only be notified once.
  PipeCondition
Group-only non-polling condition with counters.
  _PipeConditionWithMode
  SharedLock
Implements a shared lock.
  _AcquireTimeout
Internal exception to abort an acquire on a timeout.
  LockSet
Implements a set of locks.
  GanetiLockManager
The Ganeti Locking Library
  LockMonitor
Functions [hide private]
 
ssynchronized(mylock, shared=0)
Shared Synchronization decorator.
source code
 
_MonitorSortKey((item, idx, num))
Sorting key function.
source code
Variables [hide private]
  _EXCLUSIVE_TEXT = "exclusive"
  _SHARED_TEXT = "shared"
  _DELETED_TEXT = "deleted"
  _DEFAULT_PRIORITY = 0
  ALL_SET = None
  LEVEL_CLUSTER = 0
  LEVEL_INSTANCE = 1
  LEVEL_NODEGROUP = 2
  LEVEL_NODE = 3
  LEVELS = [LEVEL_CLUSTER, LEVEL_INSTANCE, LEVEL_NODEGROUP, LEVE...
  LEVELS_MOD = [LEVEL_NODE, LEVEL_NODEGROUP, LEVEL_INSTANCE]
  LEVEL_NAMES = {LEVEL_CLUSTER: "cluster", LEVEL_INSTANCE: "inst...
  BGL = 'BGL'

Imports: os, select, threading, errno, weakref, logging, heapq, itertools, errors, utils, compat, query


Function Details [hide private]

ssynchronized(mylock, shared=0)

source code 

Shared Synchronization decorator.

Calls the function holding the given lock, either in exclusive or shared mode. It requires the passed lock to be a SharedLock (or support its semantics).

Parameters:
  • mylock (lockable object or string) - lock to acquire or class member name of the lock to acquire

_MonitorSortKey((item, idx, num))

source code 

Sorting key function.

Sort by name, registration order and then order of information. This provides a stable sort order over different providers, even if they return the same name.


Variables Details [hide private]

LEVELS

Value:
[LEVEL_CLUSTER, LEVEL_INSTANCE, LEVEL_NODEGROUP, LEVEL_NODE]

LEVEL_NAMES

Value:
{LEVEL_CLUSTER: "cluster", LEVEL_INSTANCE: "instance", LEVEL_NODEGROUP\
: "nodegroup", LEVEL_NODE: "node",}