Revision 5e0a6daf lib/locking.py

b/lib/locking.py
759 759
        self.__lock.release()
760 760
    return set(result)
761 761

  
762
  def acquire(self, names, blocking=1, shared=0):
762
  def acquire(self, names, timeout=None, shared=0):
763 763
    """Acquire a set of resource locks.
764 764

  
765 765
    @param names: the names of the locks which shall be acquired
766 766
        (special lock names, or instance/node names)
767 767
    @param shared: whether to acquire in shared mode; by default an
768 768
        exclusive lock will be acquired
769
    @param blocking: whether to block while trying to acquire or to
770
        operate in try-lock mode (this locking mode is not supported yet)
769
    @type timeout: float
770
    @param timeout: Maximum time to acquire all locks
771 771

  
772 772
    @return: True when all the locks are successfully acquired
773 773

  
......
776 776
        locks requested will be acquired.
777 777

  
778 778
    """
779
    if not blocking:
780
      # We don't have non-blocking mode for now
779
    if timeout is not None:
781 780
      raise NotImplementedError
782 781

  
783 782
    # Check we don't already own locks at this level
......
961 960

  
962 961
    return True
963 962

  
964
  def remove(self, names, blocking=1):
963
  def remove(self, names):
965 964
    """Remove elements from the lock set.
966 965

  
967 966
    You can either not hold anything in the lockset or already hold a superset
968 967
    of the elements you want to delete, exclusively.
969 968

  
970 969
    @param names: names of the resource to remove.
971
    @param blocking: whether to block while trying to acquire or to
972
        operate in try-lock mode (this locking mode is not supported
973
        yet unless you are already holding exclusively the locks)
974 970

  
975 971
    @return:: a list of locks which we removed; the list is always
976 972
        equal to the names list if we were holding all the locks
977 973
        exclusively
978 974

  
979 975
    """
980
    if not blocking and not self._is_owned():
981
      # We don't have non-blocking mode for now
982
      raise NotImplementedError
983

  
984 976
    # Support passing in a single resource to remove rather than many
985 977
    if isinstance(names, basestring):
986 978
      names = [names]
......
1135 1127
    """
1136 1128
    return level == LEVEL_CLUSTER and (names is None or BGL in names)
1137 1129

  
1138
  def acquire(self, level, names, blocking=1, shared=0):
1130
  def acquire(self, level, names, timeout=None, shared=0):
1139 1131
    """Acquire a set of resource locks, at the same level.
1140 1132

  
1141 1133
    @param level: the level at which the locks shall be acquired;
......
1144 1136
        (special lock names, or instance/node names)
1145 1137
    @param shared: whether to acquire in shared mode; by default
1146 1138
        an exclusive lock will be acquired
1147
    @param blocking: whether to block while trying to acquire or to
1148
        operate in try-lock mode (this locking mode is not supported yet)
1139
    @type timeout: float
1140
    @param timeout: Maximum time to acquire all locks
1149 1141

  
1150 1142
    """
1151 1143
    assert level in LEVELS, "Invalid locking level %s" % level
......
1164 1156
           " while owning some at a greater one")
1165 1157

  
1166 1158
    # Acquire the locks in the set.
1167
    return self.__keyring[level].acquire(names, shared=shared,
1168
                                         blocking=blocking)
1159
    return self.__keyring[level].acquire(names, shared=shared, timeout=timeout)
1169 1160

  
1170 1161
  def release(self, level, names=None):
1171 1162
    """Release a set of resource locks, at the same level.
......
1205 1196
           " while owning some at a greater one")
1206 1197
    return self.__keyring[level].add(names, acquired=acquired, shared=shared)
1207 1198

  
1208
  def remove(self, level, names, blocking=1):
1199
  def remove(self, level, names):
1209 1200
    """Remove locks from the specified level.
1210 1201

  
1211 1202
    You must either already own the locks you are trying to remove
......
1215 1206
        it must be a member of LEVELS_MOD
1216 1207
    @param names: the names of the locks which shall be removed
1217 1208
        (special lock names, or instance/node names)
1218
    @param blocking: whether to block while trying to operate in
1219
        try-lock mode (this locking mode is not supported yet)
1220 1209

  
1221 1210
    """
1222 1211
    assert level in LEVELS_MOD, "Invalid or immutable level %s" % level
......
1228 1217
    assert self._is_owned(level) or not self._upper_owned(level), (
1229 1218
           "Cannot remove locks at a level while not owning it or"
1230 1219
           " owning some at a greater one")
1231
    return self.__keyring[level].remove(names, blocking=blocking)
1220
    return self.__keyring[level].remove(names)

Also available in: Unified diff