Revision afa1386e lib/config.py
b/lib/config.py | ||
---|---|---|
138 | 138 |
self._temporary_ids = TemporaryReservationManager() |
139 | 139 |
self._temporary_drbds = {} |
140 | 140 |
self._temporary_macs = TemporaryReservationManager() |
141 |
self._temporary_secrets = TemporaryReservationManager() |
|
141 | 142 |
# Note: in order to prevent errors when resolving our name in |
142 | 143 |
# _DistributeConfig, we compute it here once and reuse it; it's |
143 | 144 |
# better to raise an error before starting to modify the config |
... | ... | |
190 | 191 |
self._temporary_macs.Reserve(mac, ec_id) |
191 | 192 |
|
192 | 193 |
@locking.ssynchronized(_config_lock, shared=1) |
193 |
def GenerateDRBDSecret(self): |
|
194 |
def GenerateDRBDSecret(self, ec_id):
|
|
194 | 195 |
"""Generate a DRBD secret. |
195 | 196 |
|
196 | 197 |
This checks the current disks for duplicates. |
197 | 198 |
|
198 | 199 |
""" |
199 |
all_secrets = self._AllDRBDSecrets() |
|
200 |
retries = 64 |
|
201 |
while retries > 0: |
|
202 |
secret = utils.GenerateSecret() |
|
203 |
if secret not in all_secrets: |
|
204 |
break |
|
205 |
retries -= 1 |
|
206 |
else: |
|
207 |
raise errors.ConfigurationError("Can't generate unique DRBD secret") |
|
208 |
return secret |
|
209 |
|
|
200 |
return self._temporary_secrets.Generate(self._AllDRBDSecrets(), |
|
201 |
utils.GenerateSecret, |
|
202 |
ec_id) |
|
210 | 203 |
def _AllLVs(self): |
211 | 204 |
"""Compute the list of all LVs. |
212 | 205 |
|
... | ... | |
1429 | 1422 |
""" |
1430 | 1423 |
self._temporary_ids.DropECReservations(ec_id) |
1431 | 1424 |
self._temporary_macs.DropECReservations(ec_id) |
1425 |
self._temporary_secrets.DropECReservations(ec_id) |
|
1432 | 1426 |
|
Also available in: Unified diff